{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ax1r8W0rU8d1"
   },
   "source": [
    "# 线性回归 - Linear Regreesion\n",
    "\n",
    "此Notebook是配合Andrew Ng \"Machine Leanring\"中[线性回归](https://github.com/loveunk/machine-learning-deep-learning-notes/blob/master/machine-learning/linear-regression.md)部分学习使用。\n",
    "\n",
    "测试用python版本为3.6\n",
    "* 机器学习路径：https://github.com/loveunk/machine-learning-deep-learning-notes/\n",
    "* 内容正文综合参考网络资源，使用中如果有疑问请联络：www.kaikai.ai"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "kgTnKLvOU8d2",
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple\n",
      "Requirement already satisfied: seaborn in /home/nginx/miniconda/envs/jupyter/lib/python3.9/site-packages (0.13.2)\n",
      "Requirement already satisfied: numpy!=1.24.0,>=1.20 in /home/nginx/miniconda/envs/jupyter/lib/python3.9/site-packages (from seaborn) (1.26.4)\n",
      "Requirement already satisfied: pandas>=1.2 in /home/nginx/miniconda/envs/jupyter/lib/python3.9/site-packages (from seaborn) (2.2.3)\n",
      "Requirement already satisfied: matplotlib!=3.6.1,>=3.4 in /home/nginx/miniconda/envs/jupyter/lib/python3.9/site-packages (from seaborn) (3.9.2)\n",
      "Requirement already satisfied: contourpy>=1.0.1 in /home/nginx/miniconda/envs/jupyter/lib/python3.9/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (1.3.0)\n",
      "Requirement already satisfied: cycler>=0.10 in /home/nginx/miniconda/envs/jupyter/lib/python3.9/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (0.12.1)\n",
      "Requirement already satisfied: fonttools>=4.22.0 in /home/nginx/miniconda/envs/jupyter/lib/python3.9/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (4.54.1)\n",
      "Requirement already satisfied: kiwisolver>=1.3.1 in /home/nginx/miniconda/envs/jupyter/lib/python3.9/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (1.4.7)\n",
      "Requirement already satisfied: packaging>=20.0 in /home/nginx/miniconda/envs/jupyter/lib/python3.9/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (24.1)\n",
      "Requirement already satisfied: pillow>=8 in /home/nginx/miniconda/envs/jupyter/lib/python3.9/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (10.4.0)\n",
      "Requirement already satisfied: pyparsing>=2.3.1 in /home/nginx/miniconda/envs/jupyter/lib/python3.9/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (3.2.0)\n",
      "Requirement already satisfied: python-dateutil>=2.7 in /home/nginx/miniconda/envs/jupyter/lib/python3.9/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (2.9.0.post0)\n",
      "Requirement already satisfied: importlib-resources>=3.2.0 in /home/nginx/miniconda/envs/jupyter/lib/python3.9/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (6.4.5)\n",
      "Requirement already satisfied: pytz>=2020.1 in /home/nginx/miniconda/envs/jupyter/lib/python3.9/site-packages (from pandas>=1.2->seaborn) (2024.2)\n",
      "Requirement already satisfied: tzdata>=2022.7 in /home/nginx/miniconda/envs/jupyter/lib/python3.9/site-packages (from pandas>=1.2->seaborn) (2024.2)\n",
      "Requirement already satisfied: zipp>=3.1.0 in /home/nginx/miniconda/envs/jupyter/lib/python3.9/site-packages (from importlib-resources>=3.2.0->matplotlib!=3.6.1,>=3.4->seaborn) (3.20.2)\n",
      "Requirement already satisfied: six>=1.5 in /home/nginx/miniconda/envs/jupyter/lib/python3.9/site-packages (from python-dateutil>=2.7->matplotlib!=3.6.1,>=3.4->seaborn) (1.16.0)\n"
     ]
    }
   ],
   "source": [
    "!pip install seaborn -i https://pypi.tuna.tsinghua.edu.cn/simple\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "sns.set(context=\"notebook\", style=\"whitegrid\", palette=\"dark\")\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "Nje4hmN0U8d6",
    "tags": []
   },
   "outputs": [],
   "source": [
    "df = pd.read_csv('ex1data1.txt', names=['population', 'profit']) # 读取数据并赋予列名"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "a9p1GK2iU8d8",
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>population</th>\n",
       "      <th>profit</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6.1101</td>\n",
       "      <td>17.5920</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>5.5277</td>\n",
       "      <td>9.1302</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>8.5186</td>\n",
       "      <td>13.6620</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>7.0032</td>\n",
       "      <td>11.8540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.8598</td>\n",
       "      <td>6.8233</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   population   profit\n",
       "0      6.1101  17.5920\n",
       "1      5.5277   9.1302\n",
       "2      8.5186  13.6620\n",
       "3      7.0032  11.8540\n",
       "4      5.8598   6.8233"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head() # 显示数据前五行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "Ly0Fs3unU8eA",
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 97 entries, 0 to 96\n",
      "Data columns (total 2 columns):\n",
      " #   Column      Non-Null Count  Dtype  \n",
      "---  ------      --------------  -----  \n",
      " 0   population  97 non-null     float64\n",
      " 1   profit      97 non-null     float64\n",
      "dtypes: float64(2)\n",
      "memory usage: 1.6 KB\n"
     ]
    }
   ],
   "source": [
    "df.info() # 打印df的class信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "WsQ2uPs6muT7",
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>population</th>\n",
       "      <th>profit</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>97.000000</td>\n",
       "      <td>97.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>8.159800</td>\n",
       "      <td>5.839135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>3.869884</td>\n",
       "      <td>5.510262</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>5.026900</td>\n",
       "      <td>-2.680700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>5.707700</td>\n",
       "      <td>1.986900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>6.589400</td>\n",
       "      <td>4.562300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>8.578100</td>\n",
       "      <td>7.046700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>22.203000</td>\n",
       "      <td>24.147000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       population     profit\n",
       "count   97.000000  97.000000\n",
       "mean     8.159800   5.839135\n",
       "std      3.869884   5.510262\n",
       "min      5.026900  -2.680700\n",
       "25%      5.707700   1.986900\n",
       "50%      6.589400   4.562300\n",
       "75%      8.578100   7.046700\n",
       "max     22.203000  24.147000"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe() # 打印df的统计信息"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "dtj0pJAOU8eE"
   },
   "source": [
    "***\n",
    "# 看下原始数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "ON7EiaK7U8eE",
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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RpxbBiBWCEcAcByVC4pUXlagw60+2bY94Jht22pp86m8rECVC4oS1EIA0ZZUU/n37dunhx9+WNu3b9c777yj0tJSrV+/fsB9Lr/8cr322muDHrthwwaVlZXFq6kAJgjTNFW9eqlWVa9XQ1OH8nM9Snc71O0PqaXNp5wst6pXL2W9I2AcSapw9M4772jjxo067bTTZFnWoG9pfc444wzdcMMNA26bMWNGPJoIYAKqWlKqdTUrwuscHWnrlstpqmJuIescAeNQUoWjqqoqnX/++ZKk6upq7dixY8j75eTk6PTTT49jywBMdFVLSrVscQkrZAMTQFKFIz5kACQz0zS1sGJ6opsBIMZSMo289tprOv3003Xqqadq5cqVev311xPdJAAAME4k1cjRcJx55pm6+OKLVVJSooMHD+rhhx/WF77wBT3++OOqrKwc9Xlt25bXG911Snw+34B/T2T0RT/6oh990Y++6Edf9KMv+o21LzIyhr/chmEfq+o5wfpqjo6erXY0r9erFStWqKysTA8++OConuvNN99UIBAY1WMBJJZl2dpV36bWjoAmZbtUXpor0zRO/EAAE8rChQuHfd+UGzk6WkZGhs4991y98MILYzqP0+nUnDlzotSqXj6fT3v37lVJSYk8Hk9Uz51q6It+9EW/sfbFy1v26Y4HXtXf97QoGLTkdJo6eXa+rrvybC1bPCsGLY4d3hf96It+9EW/ePZFyoejaDEMY0RDbiPh8Xhidu5UQ1/0oy/6jaYvajfX6+rv/kEdnX5NzvPI7XLIHwjpb+806+rv/kHralak5BR73hf96It+9EW/ePRFShZkR/J6vXr55Zd16qmnJropAOLEsizVrN2kjk6/iouy5Ul3yjQNedKdKi7MVkeXXzVrN8myrEQ3FUAKSqqRI5/Pp40bN0qSGhoa1NnZqeeff16SdNZZZ6m+vl4PPfSQLrjgAhUXF+vgwYN69NFHdejQId11112JbDqAONq2o1G7djdrcp5HhjGwvsgwDOXnerRrd7O27Whk6j2AEUuqcHT48GFdffXVA27r+/lnP/uZioqKFAwGdeedd6q1tVUej0eVlZW65ZZbVFFRkYgmA0iA5havAkFLbtfQH2HpboeOtHWruSW6M1ABTAxJFY5mzJihXbt2Hfc+Dz/8cJxaAyBZFeRnyOU05Q+E5El3Djre7Q/J5TRVkE+NBoCRS/maIwATT+WCIpWXFehwq2/QHoy2baulzafysgJVLihKUAsBpDLCEYCUY5qmqlcvVXamWw1NHfL6grIsW15fUA1NHcrJcqt69VK2JAIwKnxyAEhJVUtKta5mhSrmFqrLG9D7BzvV5Q2oYm6h7r8tNafxA0gOSVVzBAAjUbWkVMsWl2jbjkY1t3hVkJ+hygVFjBgBGBPCEYCUZpom0/UBRBVfrwAAACIQjgAAACIQjgAAACIQjgAAACIQjgAAACIQjgAAACIwlR/jjmVZrHsDABg1whHGldrN9apZu0m7djcrELTkcpoqLytQ9eqlrJgMABgWvk5j3KjdXK9V1etVt7NJWZkuTZuapaxMl+rebtKq6vWq3Vyf6CYCAFIA4QjjgmVZqlm7SR2dfhUXZcuT7pRpGvKkO1VcmK2OLr9q1m6SZVmJbipGwLIsba07oBdefldb6w7w+wMQF1xWw7iwbUejdu1u1uQ8jwzDGHDMMAzl53q0a3eztu1oZKuJFMElUgCJwsgRxoXmFq8CQUtu19B5P93tUCBoqbnFG+eWYTS4RAogkQhHGBcK8jPkcpryB0JDHu/2h+RymirIz4hzyzBSXCIFkGiEI4wLlQuKVF5WoMOtPtm2PeCYbdtqafOpvKxAlQuKEtRCDNdILpECQCwQjjAumKap6tVLlZ3pVkNTh7y+oCzLltcXVENTh3Ky3KpevZT1jlIAl0gBJBp/KTBuVC0p1bqaFaqYW6gub0DvH+xUlzegirmFuv+2FRTxpggukQJINGarYVypWlKqZYtLWCE7hfVdIq17u0nFhY4Bl9b6LpFWzC3kEimAmCEcYdwxTZPp+ims7xLpqur1amjqUH6uR+luh7r9IbW0+bhECiDm+HQBkHS4RAogkRg5ApCUuEQKIFEIRwCSFpdIASQCX8EAAAAiEI4AAAAiEI4AAAAiEI4AAAAiEI4AAAAiEI4AAAAiEI4AAAAiEI4AAAAiEI4AAAAiEI4AAAAiEI4AAAAiEI4AAAAisPEscByWZbErPABMMIQj4BhqN9erZu0m7drdrEDQkstpqrysQNWrl6pqSWmim4dxIDJ8Z2WYchl2opsEQIQjjFNjHfGp3VyvVdXr1dHp1+Q8j9wuh/yBkOrebtKq6vVaV7OCgIQxOTp8OxyGigvduumaTF103rxENw+Y0AhHGHfGOuJjWZZq1m5SR6dfxUXZMgxDkuRJd6q40KGGpg7VrN2kZYtLuMSGURkqfPu6A3p3b4e+fvMLSk93E76BBOKTHSnPsixtrTugF15+V/c//rpWVa9X3c4mZWW6NG1qlrIyXeERn9rN9Sc837Ydjdq1u1mT8zzhYNTHMAzl53q0a3eztu1ojNVLwjh2dPj2pDtlmoY86U5NyXersyuomrWbZFlWopsKTFiMHGFEkq1AOXKUyB/oUWt7t2xbmjUjV550p6SRj/g0t3gVCFpyu4b+3yPd7dCRtm41t3hj8powvp0ofOflusPhe2HF9AS1EpjYCEcYtmQrUD760oQn3dbhVp9s29b/NrRp1oxJys50SRo84nO8PzoF+RlyOU35A6FwwIrU7Q/J5TRVkJ8Rs9eG8etE4dvtcqi1PUD4BhKIy2oYlr4gMpbLVdE01KWJHqt3po/LYarHsvX+wY4Bj0l3OxQIWif8o1O5oEjlZQXhoBXJtm21tPlUXlagygVF0X1RmBAiw/dQ/AHCN5BohCOc0PFqJIoLs9XR5Y97jcRQlyYcDlOGIdky5Egz5feH5PUFw48Z7oiPaZqqXr1U2ZluNTR1yOsLyrJseX1BNTR1KCfLrerVSynGxqicKHwfafMTvoEE49MdJ5SMBcpDXZrISHco3e1QKGRJsmXZUqinN7CNdMSnakmp1tWsUMXcQnV5A3r/YKe6vAFVzC3U/bcxjR+jd6zw7esO6lCLX1mZLsI3kGBjqjn67Gc/q69+9atavHjxkMdfffVV/eQnP9HPfvazsTwNEiwZC5SHqgsyDENFU7L0vw1tCoYsGYZkGoa8vqBa2nwjHvGpWlKqZYtLkqoAHeNDX/juq+E70tYth8PQnJJs3XTNeYRvIMHGFI5ee+01XXrppcc83tLSotdff30sT4EkkIwFyn2XJureblJxoSM8opWT5dbM6Tna19Am0zTU1uGXy2mqYm7hqArHTdNkxhBi4ujw3btCdotOOWVWopsGTHhjnq129GWWSPv27VNmZuZYnwIJdqwgIvVfrqqYWxjXGom+SxOrqteroalD+bkepbsd6vaH1N4V0MziXF135f+n2SflMeKDpBUZvr1er3buPJLgFgGQRhGOnnnmGT3zzDPhn++77z796le/GnS/jo4O7dq1S+ecc87YWoiEO14QGc3lqmgZ6tLEWEaJAACQRhGOfD6fjhzp/3bT1dU15B/FjIwMffrTn9bq1avH1kIkhWQNItQFAQCibcTh6LLLLtNll10mSaqqqtK3v/1tnXfeeVFvGJJPsgYR6oIAANE0ppqj2traaLUDKYIgAgAY70YUjg4cOCBJmj59+oCfT6Tv/gAAAMluROGoqqpKhmFo+/btcrlc4Z9PZOfOnaNuIAAAQDyNKBzddtttkiSns3etm+9///vDCkcAAACpYkThKCcnRwsWLAgHoksuuSQmjQIAAEiUEU0zWrNmjV577bXwz+edd55efPHFqDcKAAAgUUYUjjIzM9Xe3h7+uaGhQV5v/PbTAgAAiLURXVarqKjQ/fffr8OHDys7O1uStHHjRjU3Nx/zMYZh6POf//yYGgkAABAvIwpHN998s2644Qb95Cc/kdQbfNavX6/169cf8zGEIwAAkEpGFI5mzZqlX/ziF/L7/Tp8+LCqqqr0rW99ixWyAQDAuDGqFbLdbremT5+uNWvW6Oyzz1ZxcXG02wUAAJAQY9o+ZM2aNeH/7urqUmNjoySpqKhImZmZY2sZAABAAowpHElSXV2dfvjDH+qvf/2rLMuS9MH+WwsX6v/8n/+jU089dcyNBAAAiJcxhaPt27fr8ssvl9Pp1Cc/+UmVlZVJknbv3q3f/e53WrlypR5//HFVVFREpbEAAACxNqZwdOedd6qwsFA///nPNWXKlAHHrrrqKv3bv/2b7rzzTj366KNjaiQAAEC8jGgRyKNt375dn/rUpwYFI0kqKCjQv/7rv+qNN94Yy1MAAADE1ZjCkWma6unpOeZxy7JkmmN6CgAAgLgaU3KprKzUk08+qYaGhkHHDhw4oJ///Oc644wzxvIUAAAAcTWmmqNvfOMb+sxnPqPly5frggsuUElJiSRpz549evHFF5WWlqbrrrsuGu0EAACIizGFo/nz5+vXv/617rzzTtXW1srn80mSPB6PPvzhD+uaa67RnDlzotJQABOPZVnatqNRzS1eFeRnqHJBEZfqAcTcqMNRIBDQH//4RxUXF2vt2rWyLEstLS2SpPz8/FF9gO3bt08PP/ywtm/frnfeeUelpaVD7tv261//Wg899JAOHDig2bNn69prr9VHPvKR0b4UAEmodnO9atZu0q7dzQoELbmcpsrLClS9eqmqlpQmunkAxrFRfwVzOp26+uqrtW3btt4TmaYKCgpUUFAw6m9277zzjjZu3KhZs2aF10w62u9+9zvdeOONWr58uR588EGdfvrpWrNmDbPigHGkdnO9VlWvV93OJmVlujRtapayMl2qe7tJq6rXq3ZzfaKbCGAcG3U4MgxDJSUlOnLkSNQaU1VVpY0bN+ruu+/WKaecMuR97r77bn3sYx/TNddco7PPPlvf+973dOqpp2rt2rVRaweAxLEsSzVrN6mj06/iomx50p0yTUOedKeKC7PV0eVXzdpN4RX5ASDaxnTxftWqVXryySdVXx+db3EnGnHav3+/9u7dq+XLlw+4/aKLLtKWLVsUCASi0g4AibNtR6N27W7W5DyPDMMYcMwwDOXnerRrd7O27WhMUAsBjHdj3j5k0qRJ+vjHP66zzjpLxcXFSk9PH3S/73znO2N5mrC+EDZ79uwBt5eVlSkYDGr//v3HvBwHIDU0t3gVCFpyu4b+eEp3O3SkrVvNLd44twzARDGmcPTEE0+E/3vLli1D3scwjKiFo7a2NklSTk7OgNv7fu47Phq2bcvrje6Hbd/svb5/T2T0RT/6ot9QfZGVYcrhMOTrDsiT7hz8mO6gHA5DWRlm1P+fTSTeF/3oi370Rb+x9kVGRsaw7zumcPT222+P5eFJJRgMaufOnTE59969e2Ny3lREX/SjL/pF9oXLsFVc6Na7ezs0Jd894NKabds61OLXnJJsuYwW7dwZvZrHZMH7oh990Y++6Dfavli4cOGw7zumcNTn73//uzZu3BheKXvGjBk655xzdPLJJ0fj9GG5ubmSpI6OjgH7ubW3tw84PhpOpzPqazL5fD7t3btXJSUl8ng8UT13qqEv+tEX/Y7VFzddk6mv3/yCjrQHlZfrltvlkD8Q0pF2vyblZuima87TKafMSmDLo4/3RT/6oh990S+efTGmcBQIBHTTTTfpv//7v2Xbdrig2rIs3XHHHfr4xz+uW2+9VS6XKyqNLS3tXdukvr4+/N99PzudTp100kmjPrdhGCMachsJj8cTs3OnGvqiH33R7+i+uOi8eUpPd4fXOWptD8jlNFUxr3Dcr3PE+6IffdGPvugXj74YUzj64Q9/qGeffVaXXXaZVq5cqZkzZ8owDO3bt0+PP/64/uu//ku5ubn69re/HZXGnnTSSSopKdHzzz+v888/P3z7hg0btHjx4qiFMACJV7WkVMsWl7BCNoC4G1M4+s1vfqOLL75YN91004DbS0tLdfPNN6uzs1O/+c1vhh2OfD6fNm7cKElqaGhQZ2ennn/+eUnSWWedpfz8fF111VW6/vrrNXPmTC1atEgbNmxQXV3dgOJwAOODaZpaWDE90c0AMMGMKRyFQiGddtppxzxeWVmpl156adjnO3z4sK6++uoBt/X9/LOf/UyLFi3SihUr5PP59OCDD+qBBx7Q7Nmzde+996qysnJ0LwIAACDCmMLR0qVLtWnTJl122WVDHv/jH/+oJUuWDPt8M2bM0K5du054v0svvVSXXnrpsM8LAAAwXGO6eH/11Vfrvffe05o1a7RlyxY1NDSooaFBf/rTn7R69WodOHBAV199tVpbWwf8AwAAkKzGNHJ00UUXSeqdyv/iiy8OOGbbtiTpYx/72KDHxWo9IQAAgLEaUzhavXr1oL2PAAAAUtmYwtFVV10VrXbgA5ZlMXUZAIAEisoK2YiO2s314UXvAkFLLqep8rKCcb/oHRALfNEAMFqEoyRRu7leq6rXq6PTr8l5nvB2CXVvN2lV9Xqtq1lBQAKGiS8aAMaCr1FJwLIs1azdpI5Ov4qLsuVJd8o0DXnSnSouzFZHl181azfJsqxENxVIen1fNOp2Nikr06VpU7OUlekKf9Go3Vyf6CYCSHKEoySwbUejdu1u1uQ8z6ACd8MwlJ/r0a7dzdq2ozFBLQRSA180AEQD4SgJNLd4FQhacruGvsqZ7nYoELTU3OKNc8uA1MIXDQDRQDhKAgX5GXI5TfkDoSGPd/tDcjlNFeSzIzNwPHzRABANhKMkULmgSOVlBTrc6gsvntnHtm21tPlUXlagygVFCWohkBr4ogEgGghHScA0TVWvXqrsTLcamjrk9QVlWba8vqAamjqUk+VW9eqlTEMGToAvGgCigb+2SaJqSanW1axQxdxCdXkDev9gp7q8AVXMLdT9tzGNHxgOvmgAiAbWOUoiVUtKtWxxCQvXAWPQ90Wjb52jI23dcjlNVcwtZJ0jAMNCOEoypmlqYcX0RDcDSGl80QAwFoQjAOMSXzQAjBZfowAAACIQjgAAACIQjgAAACIQjgAAACIQjgAAACIQjgAAACIwlR/ACVmWxZpBACYMwhGA46rdXB9ebToQtORymiovK2C1aQDjFl/9ABxT7eZ6raper7qdTcrKdGna1CxlZbpU93aTVlWvV+3m+kQ3EQCijnAEYEiWZalm7SZ1dPpVXJQtT7pTpmnIk+5UcWG2Orr8qlm7SZZlJbqpABBVhCMgSViWpa11B/TCy+9qa92BhIeObTsatWt3sybneWQYxoBjhmEoP9ejXbubtW1HY4JaCACxQc0RkASSsa6nucWrQNCS2zX0x0S626Ejbd1qbvHGuWUAEFuMHAEJlqx1PQX5GXI5TfkDoSGPd/tDcjlNFeRnxLllABBbhCMggZK5rqdyQZHKywp0uNUn27YHHLNtWy1tPpWXFahyQVHc2wYAsUQ4AmJguPVDyVzXY5qmqlcvVXamWw1NHfL6grIsW15fUA1NHcrJcqt69VLWOwIw7lBzBETZSOqHkr2up2pJqdbVrAi/niNt3XI5TVXMLWSdIwDjFuEIiKK++qGOTr8m53nkdjnkD4TC9UPralbo7Mr+y1CRdT2edOeg8yVDXU/VklItW1zCCtkAJgw+3YAoGX79UH/9TqrU9ZimqYUV03XhsjlaWDGdYARgXOMTDoiS4dYPbX+rKXw7dT0AkHz4xAWiZDj1Q4GgpeYjvgG399X1VMwtVJc3oPcPdqrLG1DF3ELdf9sK6noAIM6oOUpR7JI+UDL0x7Drh/I8kroHHKOuBwCSB+EoBSXjasqJlCz90Vc/VPd2k4oLHQMurfXVD1XMLdRp8wu1a9eRQY/vq+sBACQWX0tTTLKuppwoydQfw68fMk58MgBAwhCOUkgyr6acCMnYH8lSP5Rsm9gCQCrhsloKGclqyhPh8kyy9kei64eS5TIjAKQqwlEKSfbVlOMtmfsjUfVDw1mEkoAEAMfHZbUUwi7pA9EfAyXjZUYASEWEoxQSuZpylzeg9k6/vL6gpORaTTleYrm6dCrW7CTzJrYAkEq4rJZCTNPUheeWadPr/6tDh7tkGIZMQ3I60+R2OVSQn5G0qylblq2d77bqveY9mjEtLyo1OH2zw1ZVr1dDU4fycz1KdzvU7Q+ppc036tWlE1mzM5b1mpL5MiMApBLCUQqp3Vyv+5/YqnSXQ6ZpKBDskW3Z6vb3yLalVZ9ZmJT1JLWb6/Ufd2/UW38/KFum3K60QWFjtKEg2rvGx7tmJ/J179l/RE89t1N/H2UoS4VNbAEgFRCOUkRkPcnsmZMkSd7ukEIhS440Qy1tPr2wcbeuvWJxUo0c9YWN9o5uZXrSlJOdoWDIGhA2JI1ppCZas8OOrtnpuzTVW7PjUENTh2rWbtKyxSVR6eOXt+zTjx9+Xbt2N6ujK6COTr9M09S0wixNm5o14lA23EUoJ8plVwAYreT5K4rjOrqexDAMZXqcys12KzPDpcmTMkZUTxKPmprIsDG9MEvp7rRBBcL//h9/0JU3/HbMizhGY9f4eNbsvF7XrK/f/ILqdjYpM8OpUMiSLanHstR4sFNdvuCIC6nZxBYAooORoxQRzXqSeNXUDCds/O3vB5XhcapkxqRhjdTEcg+1eNXsWJatx55+Rx2dAc2YliNvd0jdgZCcjjSZhhQIWXr/YIeyZ08e8XpN0b7MCAATEeEoRUSrniSeNTUDw4Y96Lhl2QoELU2d7BrWIo6xDnXxqtnZ/laT9r3XpfxJvaExFLJk25JhSDIMOdJM+f0heX1BZXicIw5liV6EEgBSHZ+WKSIa09bjvQ7OidYh8vl7lyEYKohIvSM1gaCl5hZvXPZQi+XSAJGaj/gUDPWPUDkcpgxD6ntKw5AsWwr19P4eRhPKonGZEQAmKj4xU0Q06knivQ7OicJGV1dQToepYzW5LxTk56XHJdTFq2anIM8jp6M/NGakO5TudnwwgmTLtiXTkBxp5oRcvwoAEo1wlELGuqnpcGpq+kZqoiEybLx/sEvd/p4BYSNvkkcLyqeqpa37uCM1so24hbp4bBx72vxCzZqRqSNtftm2LcMwVDQlS2lphoJBS8FQj1yuNEmikBoAEoCaoxQzlnqSRKyD0xc2+tY58vq75HamhQuEJZ1wEceWVl9cFzeMdc2OaRr6/CUf0o8e3hl+3VkZLhUWZKrxUKcsy5DL6QiHMgqpASC+CEcpaLSbmiZqHZyqJaU667RCPfu7V5U9qWjQCtknml21te5A3ENdrDeOPbOiQHffcmF4naO+133Ooln6xEXzNfukPAqpASBBCEcTSKy22xjecxuaN2eS5s2brYyMgSHmRCM143Vxw2WLZ+mjHylnVhkAJBnC0QSTrOvgHG+kJpGhLtZiPUIFABg5wtEEdPRITf4kj2TYajnSra11B5Jy9CJZQx0AYPwhHE1QfSMWtZvr9e3bX0zIDvQjxeKGAIB4IBxNYPHegT4auAwFAIg1vnJPUPFeLRsAgFRBOJqg4r1aNgAAqYLLajFkWbZ2vtuq95r3DFrbJ9HitQN9LFmWRf0RACDqCEcxUru5PrwqtC1TbldaUhU6J2K17Giq3VwfnrmW7IXkAIDUwtfsGOgrdN6x65A86WkqmpIZ9R3kxypeO9DHQl//1u1sUlamS9OmZiVd/wIAUhfhKMoiC52nF2Yp3Z2WlIXO8dqBPtooJAcAxFpy/eUbB5K50NmyLG2tO6AXXn5XW+sOaNnikpjvQB9tydy/AIDxgZqjKBtY6GwPOp6oQufj1eg8/8TKlClsTpZCcorBAWD8IhxFWWShs9uVNuh4IgqdY7HYY6LCQTIUkk/EYnDCIICJhHAUZZE7yE+bkjngWCJ2kD+6RsfXHVKnNyBHmqnpU7O0r6FN19/6e62rWaGFp04f1h+8RIaDyP4tLnQMuLQWj/5NxVXFx2oihkEAExtf/aIsstD5/YNd6vb3JLTQua9GJz3doXf2tmj3vhbt2d+qd/YcVt3bB9XW4df2t5r0T1/4L3105RMnnOmV6JliiSwkn4jF4In+fQNAIhCOYqBvB/lTTi6Qr7tHjc1dCSt0bm7xqrMroPc/CBKSZEjq6bHD/0i2XK60E/7BS5Zw0Ne/8S4kn2jF4Mny+waAeOOyWoxULSnVWacV6un1W9Tc5pbL5dKiyhlaWDEtru3Iz0tXhzegYNCSYeiDMDSQbUsZHpcK8hxqaOpQzdpNWra4ZNDoy0jCQaw3h61aUqpli0tGVQcz2vqZZCkGj5dk+n0DQDwRjmLolT//r37y5NtqaPIrFLITUqvx+hsHFAz2frO3B+eiAU70By/ZwoFpmiP+ozyW+plkKAaPp2T7fQNAvKTcZbWnn35a5eXlg/750Y9+lOimDVC7uV5fv/kFvbO3Q1kZzoTUaliWpYd/8VcZ6r2UdiymYainpzdApbsdCgStIf/gRYaDoSR7OBhr/Uwqryo+Gqn++waA0UrZkaOHHnpI2dnZ4Z8LCwsT2JqB+ms1Apqa7z6qVuP4l66iaduORh1o6lCaw5BhGOrpsWVZg4ePDNOQI623Hcf7gxeNmWKWZWtr3YG4Twk/un6mr+0j+Z30FYOvql6vhqYO5ed6lO52qNsfUkubL2lXFR+tRM8MBIBESdlP8VNOOUWnn356+J9p0+Jby3M8fbUa+ZPSE1q42zf6k+52yLYlt7N3A9yjmiSnw1SGx3nC0Y+xzhR7va5ZF3/pV7rkil/o8994Vpdc8YthzZCLhmgVUyeqGDwRUnWLGQAYq5QdOUpmfbUaebkOBQI9g47Hq1aj97JImibnZajxYKeCPbYcaaacDlPBoBVev3tyXoa8vuCwRj/6wkFf3c6Rtm65nKZOLZ+qT1w0X8Fg7xYlR48Ivbxln75/X538AVsF+RlxXx8omvUzYykGTzXH+n1XzC1knSMA41bKhqMVK1boyJEjmj59uv71X/9VX/7yl5WWNnhF6kSIrNUYqtYnXrUakZdFZhbnqvFQp/z+kCxbMk3JsiWHw1QoZIVHP4bzB+/ocLBn/xE99dxO3XbvH4cscrYsS3c88Kq6fCHNnJ4b/j3F8zJjtIupR1MMnqomUhgEACkFw9GUKVN01VVX6bTTTpNhGKqtrdWPf/xjNTU16aabbhr1eW3bltcbnZGc8tJczSnJ045dh5Sf65Bl25LVN2PMVkurT6ecXKDy0tyoPeexXPOlM/X1m19Qe4dfxYVZ6rEkX3dQXl9Qk3Lc+voXz1LJjEkqyPPotPmFMk1j2G2aN2eSXt7Sph+t26yOzoDyJ6UrL/eDEaGdTbryht/o7lsuVG62W7vqDys3yylbGrQuTl6OWzvfPaQtf9kbs/qVvt/J3/7erGlTzcH1M3H8nfh8vgH/ThXz5kySNEmS1N3dHZVzpmpfxAJ90Y++6Edf9BtrX2RkDH9AwrCPnnaTgn7wgx/opz/9qV5++WVNnTp1xI9/8803FQgEotqm1+ua9f376uT1hZST5ZTLaSoQtNTeGVSGx6FvfbVCZ1YURPU5j9eWx55+R/ve61Kwx5IzzdSsGZn6/CUfGlMbLMvWVd97Ve/s7dDUfPegwHGoxa85Jdm67J9K9b27t6sgzy3THDyWZlm2mlv9+u7XT9fiypH//oYrmX4nAID4Wrhw4bDvm3IjR0NZvny5HnnkEe3cuXNU4UiSnE6n5syZE7U2zZsnFRYV6gc/2aT3Grvl9ffI6TB12vwiXXfl2Vq2eFbUnms4bVl56VJtf6tJzUd8A0aJxmLbjkY1NPk1dXLmkJeqpkx2qKHJr8ysKUpPdyoQtJSTkyHzqIJoX3dQnnRblRXlmjcvdjOf5s2TZs6cqTseeFV/39OSsN+Jz+fT3r17VVJSIo/HE5fnTFb0RT/6oh990Y++6BfPvhgX4SgaDMMY0ZDbcFx47smaURBSwM5Xp9caca1GtHdCX3JWdItnO72WQiFbnnTXkEHLk+5Sa3tA04tyVV46WdvfalRujga8Btu2daTdr4q5hVr8D701R7HcAf6i8+bpox8pT4r6GY/HE/X3XKqiL/rRF/3oi370Rb949MW4CEcbNmxQWlqa5s+fn+imDGKahirnFY34F5kKO6EPt8h56uQsXXfl2frKN9fr/YNdyp907PWB4vG6J1IxNQBg5FIuHH3pS1/SokWLVF5eLkl68cUX9atf/Uqf/exnNWXKlAS3Ljr6VnLu6PRrcp4n7tPeh2skiwR2d0/St75aoV8/f0Dv7j0y5JTwVHndAIDxLeXC0ezZs/XUU0+psbFRlmWppKRE3/rWt3T55ZcnumlREY2VnONlpCtGn1lRoJWXLtWu+rZBl7RS6XUDAMa3lAtH3/nOdxLdhJhKtZ3Qh7NIYF8N0ba6g+ruyQvXFkVKtdcNABi/Ui4cjWeWZWnL1v3q6AoMWcMjJedO6MdaJFCS7n/8dT3w861qaGxXKBhSRsZbmltWoE9cNF+zT8oL35cd4AEAyYJwlCT6CpHf3Nmktg6/Orr88qQ7NW1qtrIzXeH7JetO6EcXOddurte//8cftP2tJlmWLTPNkMthKC0tpFf+vE8vb9mnnCyXsjJdKi8r0CXL50VlBetYznQDAEwMhKMkEFmInD8pXV2+oLwfrGK9771WzZoxSdmZrpTZCb3v9fxvQ5ts2XK7TFm21B3okbfbpzTTkAwpEOpRVqZLdW83ac/+Vk2ZnKn3GttHvQN8KszwAwAkP75SJ9jRhcgZHpeKpmbJkWbKkKFQj6UDTe0psxN63+tpafXJti05HWkyTFOGIfWtxW7ZtpwOU4FAj2xbKi7MVkeXX5KUleEatAP8e43tcjnTdN7S2dq2o3HQ9iNSfyCr29mkrEyXpk3NCgevVdXrVbu5Pp7dAABIYcn5F3YCGaoQOSfLrZnFufJ4ekdQvL6QjnwwcnL/bck9nb3v9WRlOmXLUN8AkG33h6O+ny1bCvVY4YLrQ4e7dP2q/08VcwvV5Q3o/YOdOnzEq1DIlt8f0o8f+rMuueIX+ujKJwaEnaMDpifdKdM0Ppjp1hu8atZuGjJUAQBwNMJRgh2rEDkny60PleSrbGaecrPd+vZV5+j5J1YmdTCSel+PP9AjQ71DRT09tmy7958+vcHIlmlIjrTet2C626FA0NLsk/L0/BMr9fSDn9Y1XzpbbrdDTkdvrdGxRoNGMtMNAIATIRwlWOQq00czDEOmaSg706XFC09K2ktpkfbsP6LW9m41NHWox7IVCPbIHwjJighHhtG72azb7VCGp7f4OrLg2jRNVS4o0oub6xUI9JxwNGg4M90CQWtMM90sy9LWugN64eV3tbXuAKNQADCOUZCdYCNZZTpRhjsDrHZzve54YMsHl9A+qCsKWrKs3jDUx7Z7R4ymTc3+4OfBr3Mko0HD3cZktDP8KPQGgIkl+YciUpxl2dq2o/GYIw59q0xnZ7oHFSInQwF27eZ6fXTlE7rkil/o8994dsiaH2lg3c+sGblypPXOUHM504Y8r2EYx32dIxkN6guYh1t9Ay7fSf3Bq7ysYFQBk0JvAJh4CEcx9PKWfbrqe6/q02ueOW6w6FtlOrIQucsbSHgB9kiCQeRIT06WW7NmTJIn3TEoDE7KcSszw6lAsEd79h/R4SPeIV/n8S43SoMvw8UiYFLoDQATE5fVYqR2c72+fvMLOtLm09TJmfKku467ieqxVplO1IjRSPc6O3qkJzvTpaySfL29+7Bsf0hpaYZ6LFuT8zKUm+2W1xdUY3OnZp+Upw0/+4wcjoEjTCO93DicbUxGii1NAGBiIhzFQH+wCGhqvvuoEYdjb6J69CrTsWzfiULYSIPBUHU/3u6QgqEeOZ1pkmxZti2Hw5RhGMrMcGnalGy9f7BD299qGvS6R7qprRT9gMmWJgAwMRGOYqAvWORPSpehngHHEj3iMNzi4pEGg6FGekIhS7YtGbIV7LHldqYpI91xzHMcbTSjQdEMmLEu9AYAJCfCUQz0BYu8XIcCgZ5BxyNDQTz3AovcpmRynkdul+OYl/pGGgyGGulJM3tHnAIhS440U5Pz3Mc9x1ASebkxFWYSAgCij3AUA5HBwhjieF8o2LP/iD668om4TBEfaQ3RaILB0SM9/kCP0kxDtm1oxrRsuRz2Cc8xlHhdbhzqeUd6aQ8AkPr4VI+BvmBxpM1/zKnlUyZn6o4HtsRtivhIV5Ee7QywqiWl4RWuf3rnv+jH3/2oZhbnqrMrqG5/T1ItUzAcyTqTEAAQO4wcxUBfsLjyht/oUItPUyY75El3hUccsjNdknTCUZxzFs3S9reaElZcPJKan+NdHjy5dLL+4+6NeuvvB+X1d8ntTBvTLLJ4S7aZhACA2CIcxUjVklLdfcuF+t6PX1RDk1+t7YFwsLhk+Tzddu8fjzuKs/2tRi295BG939QRlUtuoy0uHk4wOFGRd9WSUp11WqGe/d2ryp5UpBnT8lIuXCTq0h4AIP4IRzG0bPEsTck5WwE7X51eKxws/vBK/XFHcYLBHh0+4lMgZGn61Cy5XQ61tnfrL3UH9PlvPKtHfnSxzv9w2YjaMpbi4uMFg+EWeZumoXlzJmnevNnKyGB2FwAgeaXOV/cUZZqGKhcU6cJlc7SwYrpM0zzu6s+2bevAwU7ZslVUkKlQj61397WoobFd7Z1+NTS261Nf+3/6nz/uHmE7or+KNCtIAwDGI8JRAhxvLzCvL6huf0jpbod6LFv73muVrzsk0zTkSDNlmoZa23z6wjeePW7R9lC7yEe7uHikRd4AAKQCLqslwPGmiDc2d8owpPxcj957v12hnt41ggJBS7Ztqy9LNR7q1L//xx/02vorBo32nKgGKFrFxSMr8p404vMDAJAIjBwlyLFGcYqmZMs0Db1/qFO+7pB6emz5A71T4CNZtq3tbzXqgSe3Drh9OJvF9tUQRV7qG42RbA4LAECqIBwlUOSaQI/95z/rm2s+rGCwR4Y06HKbpPCokWkacjpMWZatB3++NVzTE+8aoONdHuwr8i4vK2AFaQBASiEcJVjfKM4F55Tq6ed2qrMroFnFuUpLG/pXYxiS02HKMEyZaYYONHWEa3riXQMUiyJvAAASjb9aMWZZtrbtaBxQGD2UyGCTk52ukhmTNFSmcDhMpZmGQj2W0t0OSUZ44cbh1AAFglZUd5FnBWkAwHhDQXYMvbxln77341fV0ORXKGQfdyHHo4NNTpZbxUU52n+gfdB5AyFLaaahyZMyZNt2uKYnUbvIs4I0AGA84a9XjNRurtfXb35B7+ztUFaG84R7pw1V3Dx1cqYyPE5FXiGzbVuedIdmFueqOxAaUNOTyBqgaBV5AwCQaPwFi4H+wuiApua7h1UYfaxgM2Nazgc1RpLbnabSk/I0oyhH7Z3+QTU91AABADB2/JWMgb76ofxJ6cMujD5WsEkzDWVmuJTudig3y632zsBxa3qoAQIAYGyoOYqBvvqhvFyHAoGeQccHLo7Yry/Y9C3geKStWy6nqX+omK5//+oS5eV6hlXTQw0QAACjRziKgcj6IWOI48crjI5WsOmrAbIsS9t2NOoPr9QTkgAAGAbCUQz01Q/V7WxSXk7agGN9hdEVcwuPWRjdF2yO1hd0hhuaTrSNCAAAGIxwFAN99UNX3vAbHWrxacpkhzzpLnX7Q2pp842qMHqkQadvG5GOTr8m53nkdjnkD4TCs+XW1VB/BADAULi+EiNVS0p19y0Xak5Jtjq9wTEVRg9nv7RI8d5GBACA8YSRoxhatniWpuScrYCdr06vNaqan6ODTt/st96g41BDU4dq1m7SssUl4fOOZBuRoS7fAQAwkRGOYsw0DVXOK1JGxuhWpR5N0BnONiJDzZYDAABcVkt6o9kvbajVtiPFahsRAADGA8JRkhtN0EnkNiIAAKQ6wlEcWJatrXUH9MLL72pr3YERFUKPJuiwjQgAAKNHzVGMvV7XrH+//Vd6d++RAVPwh7vidV/QWVW9Xg1NHcrP9Sjd7TjhsgDHWm27Ym4h6xwBAHAchKMYennLPn3/vjr5A7YK8jPCaw39pe6A/umL/6XsTJdM0zzhmkWjDTpsIwIAwMgRjmLEsizd8cCr6vKFNHN6rtLSelfKDoYseX1BBYI9MgypvLTghIszWpal3Ox0XXvF2Tp02KvWtm7JkCblpMvv79HWugPHHXliuj4AAMNHOIqRbTsa9fc9LcrNcoan4Nu2rcZDnerpseVypikYstTa3i2Hw1ReTrqOtHcPWrMocmXszq6AvN1B9Vi2bEuyZSvNNDUpx63T5hdxuQwAgCjg+kqMNLd4FfygxqiPtzukbn9IDkfvbaGQpf0H2rVnf6vq//eIOjr92v5Wo7btaJQ0cGVswzTU6Q0oEOxRMGgp1GPJkCHLsnWkvVt/qTsw5GrZAABgZAhHMVKQnyGn01Qg2D8zLRSyZNu9l8kCgR7Zdu8ikU6HKdM05Q/06HCrT/+zafeglbFbWn2ybEnqXwjSsm05HIZsq/fc7Z3dbAsCAMAYEY5ipHJBkU6ena/2zmB4Cr7DYcoweuuObPUGI0eaIcMwekNSminblp557m1tffNAeGVsX3dIfn9IpmHItm0ZRm9E6j2vIYfDVHcgpIx0V3i1bAAAMDqEoxgxTVPXXXm2MjwOvX+wS15fUOmuNKWZvQFIkpwOU4qoRwr12Ep3O3SgqV1//mtDeGXsUI8ly+69a+RSR7atcFiybSktzRi0WjYAABgZwlEMLVs8S9/6aoVOOblAXd6AGg91ye3unbWWZvaOGNm2LcuyFQxaSkszNH1qloKh3gTUtzK2I82U+UEAitxezTD0wTl6/7u30JttQQAAGAtmq8XYmRUFWnnpUu2qb1Nzi1eHDnfpG997Xt7ukALBnnCw8XgcKpqSJUeaKZezR4sqZ6i8rEB1bzepuDBbbrdDvu6QDKO3CFuSTMOQZCsUsuVJd8jbHdBp84rYFgQAgDEgHMWBaRrhtYYsy9LPntqu7TsbdVJujkI9thwOUxnpvb+KhqYOVcwt1MKKaYNWxn7f36HeaqUPzmsYCoVsGWZvPVNudvoxtwWxLIvFIAEAGAbCUZxFbgdypL07vB2Ir3vwdiBHr4ydlemW1xcY8TpHkWslRW5hwrpIAAAMRjhKgJFsB3L0FiD5eemSbaj5SJcOt/g0OS+jt8bIsNVypHvQatl9ayV1dPo1Oc8T3sLkeCtyAwAwkRGOEmQk+54dbwuQ2s31+vbtLw45KrRsccmAtZL6Vur2pDtVXOhQQ1PHoBW5AQCY6AhHCTTWfc9ONCp03ZWLw2slGZHT3NQ7yy0/1xNeF4n91wAA6MVwQYo6egVtT7pTpml8MCqUrY4uvx78+Vb5Az1yu4bOwOluB+siAQBwFEaOUtS2HY0nHBU60NQhQ5I/EJIn3TnoHN3+0KjXRWL2GwBgvCIcJRnLsrT1zQP6818bJEmLKmdoYcW0QcGjucUbXkF7KOluhyRD04qydKCpQ8WFjgEhyrZttbT5VDG3cMTrIjH7DQAwnhGOkkjt5nr9+3/8QX/7+8HwhrVOh6kF5VN1+7cvGBA8CvIzwitop7sd8naHFApZ4TWT+kaFrrxsoe54YEt4raR0d++xo5cNGEkbmf0GABjPuA6SJGo31+uz1zyjN/7WqGDIktNhyukwFeqx9MbfGnX51c+odnN9+P6VC4pUXlag9w926p09Ldq9r0V732vV7n0temdPixoPdaq8rEBXfmah1tWsUMXcQnV5A3r/YKe6vAFVzC3U/beNLMgMp86pZu0mWZYViy4CACAuGDlKApZl6ba1m3TosFcyJLczLbyJmmkaCgYtNbd06bZ7/xiedm+api48t0wvb9mrUI8lpyNNaWmSZUmd3oAcab3H+xaTHO6yAccznDonZr8BAFIdI0dJYNuORu14u0mW3RtyIneXNQxDDocpy5Z2vH1Q23Y0SuoNVC9s3K2sTJcyM5ySbIV6bEm2MjOcysp06YWNu8OjOH3LBly4bI4WVkwfVfH0cOqcmP0GAEh1jBwlgeYWr/yB/k1oI1mWLcuyZNu2/MGecPDoG8WZNjVLnnSnvL6gQj2WHGmmMjy9P0d7FCeyzinas98AAEgWhKMkUJCfIbcrTYahcEDq6bEUDPWGIvuDvWa7vAHt2X9E0uBRnAzPwLCS7nboSFv3gFGcsU6/76tzqnu7Kaqz3wAASCaEoyRQuaBIp5RP1cZX9ykQDCnNNBUMDS5qtm1bP1r3J51cOnnEozjRmH4fuWlutGa/AQCQbPgrFieWZWlr3QG98PK72lp3YMCMrtrNe3SgsUNWjy3L0pDByOkwVTJjkjq9AdWs3aTT5heqvKxAh1t9svuGlj7QN4pTXlagygVF4en3dTublJXp0rSpWcrKdIWn30fOgjuRvk1zozH7DQCAZMTIURy8vGWffvzw60OO2mzb8b5u/NFL8gdCkiHJHvx4T7pDxUXZSnOkyeVI05s7m7RtR+OwRnEkRX3z2WjNfgMAIBkRjmLs9bpm/ejhnersCg5aNHHl159WS6tPgWCPXM40maahUI+l4AcLQBpGb4iZPjVTTc1d6vaHZNu9Rdpf+eZv9cPv/KPW1awIXy470tYtl9NUxdzC8OWyrXUHYjL9fqyb5gIAkKwIRzFkWbYee/oddXQGNGNazoBRm+lT0/TmroMKhWylu9JkpvWOuqSZpkKywgNIgUBI+xraZduSw2F+cAnN1r732sIrUj//xMpjjuIMZ/r90YXbAABMZISjGNr+VpP2vdel/EmDR218/h71lR1FXkkzTUOGaci2emephXpsmaZ6Z7NJCvTY8qQ7NWtG7oBLYscaxRlO4bZk6509h7k8BgCAKMiOqeYjPgVDQ4/ahEJWeE0jyxpYaOR0mAPWO0ozDdm2FAhZSjMNTZuaPeiS2LH0Tb8fqnC7vdOv3fuO6Ehbt269+xVdcsUv9NGVT4yoQBsAgPGGcBRDBXkeOR29ozZS7yyyLl9QbR1+hT5Yw0iSLNseEFzS0kw50vp/NT2WJcuy5El3aNaMScrOdEka3orUfdPvszPdamjqkNcXlGXZam7xqn7fEfX0WCqakqnphdmjnsEGAMB4wmW1GDptfqFmzcjU3vd86umx1RhRVN234KNpGnKkmQoGLTkcpgzZ6rFshXp6Z7VleJzKyXYr0+MatNDjcFek7pt+H1m43druU1qaoVnFucrJTpc0thls8TbWBS0BADiWlAxHu3fv1q233qpt27YpMzNTF198sa655hq5XK5EN20A0zT0+Us+pO/dW6f6/22VDPWOCBlSqKf3spphSE6nqbS03uLr3v3RemV4nDJNUx2dARXkDQxAI12ROnL6/Zat+/Ufd7+ivEnpyvAM7LNU2EA2GgtaAgBwLCn3VbutrU2f+9znFAwGdc899+jaa6/Vr371K9XU1CS6aUNauGCyiqZkKS3NlGlIPVbvJbQMj1Nls/KVk+WWy+lQRnqaLMuWYUjp7jSVzcrT9MJs2batzq6A9uxvDV8S8/qCamjqGPGK1H3T7z80e7JkGEp3Dy7QlpJ7A9loLmgJAMBQUm7k6Be/+IW6urp07733atKkSZKknp4e3XLLLVq1apUKCwsT28Cj7Kpv06EWr+aU5H0w+6x/c1ipdySpo8uvSTnpCllSUUGmMjP6R3NmnzRJe/a3yjAMdXb5h1zLaKRSdQNZy7KivqAlAABHS7m/IK+88ooWL14cDkaStHz5clmWpc2bNyeuYcfQ2hFQ8IN1hjI8TuVkuQfUDqW7HfL5Qmpq7tL0qVkDgpHUe5mraEqWMjOc+v4N5+ux//xnPf3gp/X8EytHfQnpeDPYjt56JJls29E47AUtAQAYrZQLR/X19SotHRgKcnJyNGXKFNXXJ98llUnZLjmd/TPWjtbtD8k0DVmWfdyFGoNBS1MmZ+rCZXO0sGL6mEZGjjWDbbSX6+JlOAtaJuvlQABA6ki5y2rt7e3KyckZdHtubq7a2tpGfV7btuX1RvePqs/nU3lprubMmqSd77Zo2lRzwIiHbdtqafVp1owcNR7qkq87MORlLl93UA6HoawMM2ptPLuySHd99wLd8cCr+vueFrW0+eR0mDrlQwW67sqzdXZlUVT7w+fzDfj3aGRlmHI4jLj2UyxEoy/GC/qiH33Rj77oR1/0G2tfZGQMv1Qk5cJRrASDQe3cuTPq5zVNQ5+6aIa+f1+L9h9oU06WUy6nqUDQUntnUBkeh75wSYl+9uy7endvh6bkuwcFqEMtfs0pyZbLaNHOnUei1rbCSVLN9adqV32bWjsCmpTtUnlprkzTG5O+kKS9e/eO+rEuw1ZxoTvu/RQrY+mL8Ya+6Edf9KMv+tEX/UbbFwsXLhz2fVMuHOXk5Kijo2PQ7W1tbcrNzR31eZ1Op+bMmTOWpg3i8/m0d+9eXfpP/6CZM2eGR2m8/h45HaZOm1+k6648W8sWz1JJySx9/eYXdKQ9qLxcd3iD2iPtfk3KzdBN15ynU06ZFdX29TnllJicdoC+vigpKZHH4xn1eW66JjNh/RQt0eqL8YC+6Edf9KMv+tEX/eLZFykXjkpLSwfVFnV0dOjQoUODapFGwjCMEQ25jYTH49FF583TRz9SfsyFCy86b57S093h9Xta2wO9s9LmjX5WWjLyeDxj6ufx1E9j7YvxhL7oR1/0oy/60Rf94tEXKReOzjnnHN1///0Dao+ef/55maapJUuWJLh1x9e3ztCxRC7UyMrPx0Y/AQBiKeXC0ac//Wk9/vjjWr16tVatWqWmpibdfvvt+vSnP510axyNxokCFHrRTwCAWEm5r9q5ubn66U9/qrS0NK1evVp33HGHPvnJT6q6ujrRTQMAAONAyo0cSVJZWZkee+yxRDcDAACMQyk3cgQAABBLKTlylKosy6KIGACAJEc4ipPazfXh6eeBoCWX01R5WUHKTT8HAGC8Y9giDl7esk+rqterbmeTsjJdmjY1S1mZLtW93aRV1etVuzn59oQDAGCiIhzFmGXZuuOBV9XR6VdxUbY86U6ZpiFPulPFhdnq6PKrZu0mWZaV6KYCAAARjmJuV32b/r6nRZPzPAP2ApN6V+XOz/Vo1+5mbdvRmKAWAgCASISjGGvtCCgYtOR2DV3ele52KBC01NySvLvIAwAwkRCOYmxStktOpyl/IDTk8W5/SC6nqYJ89swBACAZEI5irLw0VyfPztfhVp9s2x5wzLZttbT5VF5WoMoFRQlqIQAAiEQ4ijHTNHTdlWcrO9OthqYOeX1BWZYtry+ohqYO5WS5Vb16KesdAQCQJPiLHAfLFs/SupoVqphbqC5vQO8f7NSRNp+KC7P1jSsWa9nikkQ3EQAAfIBwFCdVS0r1/BMr9c01H9a0wizJlhoaO3TbvX/UR1c+wVpHAAAkCcJRHL28Za/ueGCLDjR2KD/Po+mF2SwGCQBAkiEcxYllWapZuymhi0FalqWtdQf0wsvvamvdARaeBABgCOytFifbdjRq1+7mYS0GubBietSfn73dAAAYHkaO4qS5xatAghaDrN1cz95uAAAME+EoTgryM+RKwGKQyXA5DwCAVEI4ipPKBUUqLyuI+2KQI7mcBwAACEdxY5qmqlcvjftikIm8nAcAQCoiHMVR1ZLSQYtBdnkDqphbqPtvWxGTwuhEXc4DACBVMVstzqqWlGrZ4hJt29Go5havCvIzVLmgKGbbh/Rdzqt7u0nFhY4Bl9b6LudVzC1kbzcAAD5AOEoA0zRjMl3/WM9VvXqpVlWvV0NTh/JzPUp3O9TtD6mlzcfebgAAHIW/iBNAIi7nAQCQqhg5miDifTkPAIBURTiaQOJ5OQ8AgFTFsAEAAEAEwhEAAEAEwhEAAEAEwhEAAEAEwhEAAEAEwhEAAEAEwhEAAEAEwhEAAEAEwhEAAEAEwhEAAEAEtg+JIcuytfPdVr3XvEczpuWxlxkAACmAcBQjtZvr9R93b9Rbfz8oW6bcrjSVlxWoevVSVS0pTXTzAADAMTCMEQO1m+u1qnq9duw6JE96moqmZCor06W6t5u0qnq9ajfXJ7qJAADgGAhHUWZZlmrWblJHp1/TC7OU7k6TaRrypDtVXJitji6/atZukmVZiW4qAAAYAuEoyrbtaNSu3c2anOeRYRgDjhmGofxcj3btbta2HY0JaiEAADgewlGUNbd4FQhacruGLudKdzsUCFpqbvHGuWUAAGA4CEdRVpCfIZfTlD8QGvJ4tz8kl9NUQX5GnFsGAACGg3AUZZULilReVqDDrT7Ztj3gmG3bamnzqbysQJULihLUQgAAcDyEoygzTVPVq5cqO9Ot9w92qdvfI8uy5fUF1dDUoZwst6pXL2W9IwAAkhR/oWOgakmp1tWs0CknF8jX3aPG5i51eQOqmFuo+29bwTpHAAAkMRaBjJGqJaU667RCPfu7V5U9qYgVsgEASBGEoxgyTUPz5kzSvHmzlZFBATYAAKmAYQwAAIAIhCMAAIAIhCMAAIAIhCMAAIAIhCMAAIAIhCMAAIAIhCMAAIAIhCMAAIAIhCMAAIAIhCMAAIAIhCMAAIAIhCMAAIAIhCMAAIAIhCMAAIAIhCMAAIAIhm3bdqIbkWh//etfZdu2XC5XVM9r27aCwaCcTqcMw4jquVMNfdGPvuhHX/SjL/rRF/3oi35j7QuXy6Xy8vJh3dcx4rOPQ7F6wxmGEfXAlaroi370RT/6oh990Y++6Edf9ItnXzByBAAAEIGaIwAAgAiEIwAAgAiEIwAAgAiEIwAAgAiEIwAAgAiEIwAAgAiEIwAAgAiEIwAAgAiEIwAAgAiEIwAAgAiEIwAAgAhsPDsKTz/9tL75zW8Ouv2KK67Q9ddff8zH2batBx98UD//+c/V0tKiefPm6Zvf/KZOP/30GLY2ti6//HK99tprQx77z//8T33sYx8b8lhVVZUaGhoG3V5XVye32x3VNsbKvn379PDDD2v79u165513VFpaqvXr1w+6369//Ws99NBDOnDggGbPnq1rr71WH/nIR054/qamJt16663atGmTnE6nLrjgAn3zm99UVlZWLF7OmJyoLzo7O/Xoo49q48aN2rt3r1wulyoqKnTttdeecJfsP//5z/rsZz876PaLLrpId955Z9Rfy1gN531xrP9vNmzYoLKysuOefzy9L9577z2dd955Qz7W5XLpzTffPOa5U+l98dxzz+k3v/mN/va3v6m9vV2zZs3S5Zdfrk984hMDNj6fCJ8VJ+qLZPmsIByNwUMPPaTs7Ozwz4WFhce9/4MPPqi7775b119/vcrLy/Xkk0/qi1/8ov77v/9bJ510UqybGxM333yzOjs7B9z205/+VL///e+1ePHi4z72wgsv1Be/+MUBt6XS7tPvvPOONm7cqNNOO02WZWmoPZx/97vf6cYbb9RXvvIVnX322dqwYYPWrFmjJ5988rihOBgM6stf/rIk6Y477lB3d7d+8IMf6LrrrtO6deti9ZJG7UR9ceDAAf3yl7/UJz7xCV1zzTXy+/165JFH9KlPfUpPPfXUCQOBJN12220qLS0N/5yXlxf11xENw3lfSNIZZ5yhG264YcBtM2bMOO65x9v7YurUqfrlL3854DbbtvXlL39ZZ5999rCeIxXeF4899piKi4tVXV2tvLw8/elPf9KNN96oxsZGrVmzRtLE+aw4UV8kzWeFjRF76qmn7JNPPtk+fPjwsB/T3d1tn3HGGfYdd9wRvs3v99sf+chH7JtvvjkGrUycqqoq+4orrjjufT7ykY/Yt9xyS5xaFBs9PT3h/77hhhvsj33sY4Pu84//+I/2N77xjQG3fepTn7K//OUvH/fcv/3tb+3y8nJ79+7d4dv++Mc/2ieffLK9ffv2MbY8+k7UF11dXbbX6x1wW2dnp33WWWfZ3/ve94577ldffdU++eST7bq6uug1OIaG875YuXKlfeWVV4743OPtfTGUvt/3hg0bhnW/VHhfDPW34jvf+Y59xhlnhPtoonxWnKgvkuWzgpqjOPnrX/+qzs5OLV++PHyby+XSBRdcoFdeeSWBLYuuv/71r3rvvff08Y9/PNFNiTnTPP7/Pvv379fevXsH/M6l3iHeLVu2KBAIHPOxr7zyisrLywd8+1myZIkmTZqkjRs3jq3hMXCivsjIyJDH4xlwW2ZmpmbOnKmDBw/Gsmlxd6K+GIvx9r4Yyvr165WVlaWqqqoYtCgx8vPzB902b948dXZ2yuv1TqjPihP1RbJ8VhCOxmDFihWaN2+ezjvvPK1bt049PT3HvG99fb0kDXgDS1JZWZkOHDig7u7umLY1XtavX6+MjIxj1hFE+u1vf6sFCxaosrJSV1xxhXbt2hWHFsZP3+989uzZA24vKytTMBjU/v37j/vYo98rhmFo9uzZ4fOmuvb29nAdynBceeWVmjdvns455xz94Ac/SPn/Z1577TWdfvrpOvXUU7Vy5Uq9/vrrJ3zMeH9fBINB/f73v9cFF1ww7NrDVH1fbN26VYWFhcrKyprwnxWRfTGURHxWUHM0ClOmTNFVV12l0047TYZhqLa2Vj/+8Y/V1NSkm266acjHtLe3y+VyDfofPicnR7Ztq62tTenp6fFofsyEQiE999xzqqqqUkZGxnHvW1VVpYqKCk2fPl379+/X/fffr8suu0zPPvtsytZfHa2trU1S7+84Ut/PfceH0t7ePqCerU9ubu5xH5dKfvjDH8owDP3bv/3bce+XnZ2tL3/5yzrzzDPldrv16quv6pFHHlF9fX1S1lQMx5lnnqmLL75YJSUlOnjwoB5++GF94Qtf0OOPP67KyspjPm68vy9eeeUVtba2asWKFSe8byq/L/7yl79ow4YN4ZqzifxZcXRfDCURnxWEo1H48Ic/rA9/+MPhn5cuXSq3262f/vSn+spXvqKpU6cmsHWJs3nzZrW0tAzrg+073/lO+L//4R/+QUuWLNHy5cv18MMP67vf/W4MW4lk8NRTT+lXv/qVampqVFRUdNz7zp8/X/Pnzw//vHjxYk2dOlXf+973VFdXp4qKilg3N+q+/vWvD/h52bJlWrFihX7yk5/owQcfTFCrEu+3v/2tCgoKTjiZQ0rd90VjY6OuvfZaLVq0aMiZVRPJcPoiUZ8VXFaLkuXLl6unp0c7d+4c8nhOTo4CgYD8fv+A29vb22UYhnJzc+PRzJhav369Jk2apKVLl474sVOnTtXChQv1t7/9LQYtS4y+32lHR8eA29vb2wccH0pOTs6gWYBS7zfIVH+vbNy4UTfddJO+9rWv6V/+5V9GdY6+2owdO3ZEs2kJk5GRoXPPPfeE7//x/L7o6urSSy+9pOXLlystLW1U50j290V7e7uuuOIKTZo0Sffcc0+4JmsiflYcqy8iJfKzgnAUJ33XSvfs2TPg9vr6ek2fPj3lL6l1d3frf/7nf/TRj35UTqcz0c1JCn2/86Ov+9fX18vpdB738mFpaemgx9m2rT179gz7unsyeuONN3T11Vfrn//5n3X11VcnujkpZ7y+LyTpD3/4g7q7u8ftZI7u7m6tWrVKHR0dg5aBmWifFcfriz6J/qwgHEXJhg0blJaWNmBIL9IZZ5yhrKwsPffcc+Hb+ooPzznnnHg1M2Zqa2vl9XpH/cHW1NSkrVu36tRTT41yyxLnpJNOUklJiZ5//vkBt2/YsEGLFy8+7ppO55xzjt5++23t3bs3fNuWLVvU2tqqc889N1ZNjql3331Xq1at0tlnn61bbrllTOf63e9+J0nj5v3i9Xr18ssvn/D1jMf3RZ/169dr5syZOu2000Z9jmR9X4RCIV1zzTWqr6/XQw89NGhNvIn0WXGivpCS47OCmqNR+NKXvqRFixaFV+t88cUX9atf/Uqf/exnNWXKFEnS5z73OR04cEB/+MMfJElut1urVq3SPffco/z8fJ188sn6r//6L7W2tupLX/pSwl5LtPz2t7/V9OnTtXDhwkHHju6L9evX66WXXtK5556rqVOnav/+/XrggQeUlpamL3zhC/Fu+qj5fL7wVNmGhgZ1dnaGP9zOOuss5efn66qrrtL111+vmTNnatGiRdqwYYPq6ur0xBNPhM/T0NCgCy64QF/72tfCC8JdeOGFWrduna666ip94xvfkM/n0+23365ly5YlZS3FifrCtm196Utfktvt1uc+97kBQ9xZWVmaM2dO+LFH98X111+vWbNmaf78+eEiy8cee0znn39+0v0RlE7cF31/FC644AIVFxfr4MGDevTRR3Xo0CHddddd4fNMhPdF37TulpYWbdmyRVdcccWQ50n198Utt9yil156SdXV1ers7NQbb7wRPjZ//ny5XK4J81lxor7o6OhIis8KwtEozJ49W0899ZQaGxtlWZZKSkr0rW99S5dffnn4PpZlDZraf8UVV8i2bT3yyCPh7UMefvjhlJ+d1dbWpj/+8Y/63Oc+N2Ap/D5H98WMGTN08OBBff/731dHR4eys7N19tln6+tf/3pK9cXhw4cHDff2/fyzn/1MixYt0ooVK+Tz+fTggw/qgQce0OzZs3XvvfcOmJFk27Z6enoGrB7sdDr10EMP6dZbb9U3vvENORwOXXDBBfrWt74Vnxc3QifqC6m3+FKSPv/5zw+431lnnaXHH39c0tB98aEPfUi//e1v9cgjjygYDKq4uFhf+cpXdOWVV8bq5YzJifqiqKhIwWBQd955p1pbW+XxeFRZWalbbrllwB+zifC+WLRokaTeLSVCodAxR55T/X2xefNmSVJNTc2gYy+++KJmzJgxYT4rTtQXDQ0NSfFZYdj2Mda2BwAAmICoOQIAAIhAOAIAAIhAOAIAAIhAOAIAAIhAOAIAAIhAOAIAAIhAOAIAAIhAOAIAAIhAOAIwoVx++eUDVrOPhnvuuSe8nRCA1Ec4AoBh8Pl8uueee/TnP/850U0BEGOEIwAYBp/Pp3vvvVevvfbaoGNf/epXVVdXl4BWAYgFNp4FgDFyOBxyOPg4BcYLRo4ARE1f7c3u3bt19dVX64wzztCiRYt06623yu/3h+8XCoW0du1anX/++VqwYIGqqqr0n//5nwoEAgPOV1VVpVWrVmnTpk26+OKLdeqpp+qiiy7S73//+yGf92hPP/20ysvL9d577x2zzYFAQHfddZcuueQSLVy4UKeffrouu+wyvfrqq+H7vPfee1q8eLEk6d5771V5ebnKy8t1zz33HPP5R/oa//KXv+iTn/ykTj31VJ133nl69tlnj9PTAGKJcAQg6q655hr5/X5dd911Ouecc/T444/rxhtvDB//zne+o7vvvlvz58/XN7/5TZ155plat26drr322kHn2rt3r6699lqdc845uu6665SWlqarr75amzdvjkpbOzs79etf/1pnnXWWrr/+eq1Zs0YtLS368pe/rJ07d0qS8vPz9d3vfleSdMEFF+j222/X7bffrgsuuOCY5x3Ja9y3b5+uvvpqLVmyRNXV1crNzVV1dbXeeeedqLxGACPDODCAqJsxY4buu+8+SdJnPvMZZWVl6ec//7m++MUvSpKeeeYZXXrppbr11lvD98nPz9cjjzyiV199VWeffXb4XHv37tU999yjf/zHf5QkffKTn9RHP/pR/ehHP9KSJUvG3Nbc3FzV1tbK5XKFb/vXf/1XLV++XI8//ri+//3vKyMjQxdeeKG++93vqry8XBdffPFxz/n222+P6DXu2bNHTz75pP7hH/5BkrR8+XKde+65evrpp3XDDTeM+TUCGBlGjgBE3Wc+85kBP69cuVKS9Morr2jjxo2SpC984QsD7tMXnPqO95k6deqAEZqsrCz98z//s9566y0dOnRozG1NS0sLByPLstTa2qpQKKQFCxborbfeGtU5R/oa58yZEw5GUu9I1ezZs7V///5RPT+AsWHkCEDUzZo1a8DPM2fOlGma4dof0zQ1c+bMAfeZMmWKcnJy1NDQMOhchmEMuK2kpESS1NDQoClTpoy5vc8884weeeQR7dmzR8FgMHz7jBkzRnW+hoaGEb3GadOmDTpHbm6u2traRvX8AMaGcAQg5o4ON8e6LZrnl6Senp4TPva///u/VV1drfPPP19f+tKXNHnyZKWlpWndunVjHrkZ7mtMS0sb0/MAiC7CEYCo27dvn0466aQBP1uWpRkzZsi2bVmWpX379qmsrCx8n+bmZrW3t6u4uHjQuWzbHhA09u7dK0nh++bk5EiS2tvbw/8tSQcOHDhhW1944QWddNJJuvfeewc8x9133z3gfiMJc8XFxSN6jQCSCzVHAKLuySefHPDzE088IUk655xzdO6550qSfvrTnw64z6OPPipJ4eN9Dh48qD/84Q/hnzs7O/Xss89q3rx54UtqfZevXn/99fD9vF7vsKbD943a2LYdvm379u164403BtzP4/FI6g1gJzLS1wgguTByBCDq3nvvPX3lK1/Rhz/8Yb3xxhv6zW9+oxUrVmju3LmSpH/5l3/RL3/5S7W3t+vMM8/Um2++qWeeeUbnn3/+gFlcUm990be//W29+eabmjx5sp566ikdPnxYt912W/g+S5Ys0fTp0/Xtb39b9fX1SktL01NPPaW8vLwTjh4tW7ZMv//977V69WotW7ZM7733nn7xi19ozpw58nq94fulp6drzpw5eu6551RSUqJJkybpQx/6kE4++eRB55w7d+6IXiOA5EI4AhB1P/7xj3XXXXfpjjvukMPh0MqVK/Xv//7v4eO33nqrZsyYoWeeeUb/8z//o4KCAq1atUpr1qwZdK6SkhLdeOONuv3227Vnzx7NmDFDd955pz784Q+H7+N0OnXvvffqlltu0V133aUpU6boc5/7nHJycvTNb37zuG295JJL1NzcrF/+8pfatGmT5syZox/+8Id6/vnnB20Vcuutt+r//t//q9tuu03BYFBr1qwZMhyN9DUCSC6GHTmWDABjcM899+jee+/Vli1blJ+fP+bzVVVV6UMf+pDWrVsXhdYBwPBQcwQAABCBcAQAABCBcAQAABCBmiMAAIAIjBwBAABEIBwBAABEIBwBAABEIBwBAABEIBwBAABEIBwBAABEIBwBAABEIBwBAABEIBwBAABE+P8BTN8BOk/9YrcAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 600x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 假设 df 是已经加载好的DataFrame\n",
    "sns.lmplot(x='population', y='profit', data=df, height=6, aspect=1, fit_reg=False)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "wRWRxgtAU8eH",
    "tags": []
   },
   "outputs": [],
   "source": [
    "def get_X(df): # 读取特征\n",
    "#     \"\"\"\n",
    "#     use concat to add intersect feature to avoid side effect\n",
    "#     not efficient for big dataset though\n",
    "#     \"\"\"\n",
    "    ones = pd.DataFrame({'ones': np.ones(len(df))})#ones是m行1列的dataframe\n",
    "    data = pd.concat([ones, df], axis=1)  # 合并数据，根据列合并\n",
    "    return data.iloc[:, :-1].as_matrix()  # 这个操作返回 ndarray,不是矩阵\n",
    "\n",
    "\n",
    "def get_y(df):#读取标签\n",
    "#     '''assume the last column is the target'''\n",
    "    return np.array(df.iloc[:, -1])#df.iloc[:, -1]是指df的最后一列\n",
    "\n",
    "\n",
    "def normalize_feature(df):\n",
    "#     \"\"\"Applies function along input axis(default 0) of DataFrame.\"\"\"\n",
    "    return df.apply(lambda column: (column - column.mean()) / column.std())#特征缩放"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "GPFqxv_zU8eJ"
   },
   "source": [
    "多变量的假设 h 表示为：${{h}_{\\theta }}\\left( x \\right)={{\\theta }_{0}}+{{\\theta }_{1}}{{x}_{1}}+{{\\theta }_{2}}{{x}_{2}}+...+{{\\theta }_{n}}{{x}_{n}}$。\n",
    "\n",
    "这个公式中有n+1个参数和n个变量，为了使得公式能够简化一些，引入${{x}_{0}}=1$，则公式转化为：  ${{h}_{\\theta }}\\left( x \\right)={{\\theta }_{0}x_0}+{{\\theta }_{1}}{{x}_{1}}+{{\\theta }_{2}}{{x}_{2}}+...+{{\\theta }_{n}}{{x}_{n}}$。\n",
    "\n",
    "此时模型中的参数是一个n+1维的向量，任何一个训练实例也都是n+1维的向量，特征矩阵X的维度是 m*(n+1)。 因此公式可以简化为：${{h}_{\\theta }}\\left( x \\right)={{\\theta }^{T}}X$，其中上标T代表矩阵转置。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "on8_khfsU8eQ"
   },
   "source": [
    "# 计算代价函数\n",
    "$$J\\left( \\theta  \\right)=\\frac{1}{2m}\\sum\\limits_{i=1}^{m}{{{\\left( {{h}_{\\theta }}\\left( {{x}^{(i)}} \\right)-{{y}^{(i)}} \\right)}^{2}}}$$\n",
    "\n",
    "其中：\n",
    "\n",
    "$${{h}_{\\theta }}\\left( x \\right)={{\\theta }^{T}}X={{\\theta }_{0}}{{x}_{0}}+{{\\theta }_{1}}{{x}_{1}}+{{\\theta }_{2}}{{x}_{2}}+...+{{\\theta }_{n}}{{x}_{n}}$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "yomFBPelU8eQ",
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(97, 1) <class 'numpy.ndarray'>\n",
      "(97,) <class 'numpy.ndarray'>\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "# 假设 df 是你的DataFrame\n",
    "# X = get_X(data)  # 这个函数没有定义，我们将用下面的方式替代\n",
    "X = data[['population']].values  # 提取特征，并转换为NumPy数组\n",
    "print(X.shape, type(X))\n",
    "\n",
    "# y = get_y(data)  # 这个函数也没有定义，我们将用下面的方式替代\n",
    "y = data['profit'].values  # 提取目标变量，并转换为NumPy数组\n",
    "print(y.shape, type(y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "AeTfJ6UyU8eT",
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.]\n"
     ]
    }
   ],
   "source": [
    "theta = np.zeros(X.shape[1]) # X.shape[1]=2, 代表特征数n\n",
    "print(theta)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "ntnGgUoKU8eV",
    "tags": []
   },
   "outputs": [],
   "source": [
    "def lr_cost(theta, X, y):\n",
    "    \"\"\" 计算代价函数\n",
    "    X: R(m*n), m 样本数, n 特征数\n",
    "    y: R(m)\n",
    "    theta : R(n), 线性回归的参数\n",
    "    \"\"\"\n",
    "    m = X.shape[0]#m为样本数\n",
    "\n",
    "    inner = X @ theta - y  # R(m*1)，X @ theta等价于X.dot(theta)\n",
    "\n",
    "    # 1*m @ m*1 = 1*1 in matrix multiplication\n",
    "    # but you know numpy didn't do transpose in 1d array, so here is just a\n",
    "    # vector inner product to itselves\n",
    "    square_sum = inner.T @ inner\n",
    "    cost = square_sum / (2 * m)\n",
    "\n",
    "    return cost"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "BPFR1bKOU8eY",
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "32.072733877455676"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr_cost(theta, X, y) # 返回cost的值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "KZ9oOCHrU8eb"
   },
   "source": [
    "# 批量梯度下降 - Batch Gradient Decent\n",
    "$$\\begin{aligned}{{\\theta }_{j}} &:={{\\theta }_{j}}-\\alpha \\frac{\\partial }{\\partial {{\\theta }_{j}}}J\\left( \\theta  \\right) \\\\ &:= {{\\theta }_{j}}-\\alpha \\frac{1}{m} \\sum^{m}_{i=1}\\left( h_\\theta \\left(x^{(i)}\\right) -y^{(i)}  \\right)x^{(i)}_j \\end{aligned}$$\n",
    "注意：对于所有的$j$，需要同时更新$\\theta_j$。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "4_JZqMY3U8ec",
    "tags": []
   },
   "outputs": [],
   "source": [
    "def gradient(theta, X, y):\n",
    "  \"\"\"\n",
    "  计算梯度，也就是 J(θ)的偏导数\n",
    "  \"\"\"\n",
    "  m = X.shape[0]\n",
    "\n",
    "  inner = X.T @ (X @ theta - y)  # (m,n).T @ (m, 1) -> (n, 1)，X @ theta等价于X.dot(theta)\n",
    "\n",
    "  return inner / m"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "IRexXn6EU8ee",
    "tags": []
   },
   "outputs": [],
   "source": [
    "def batch_gradient_decent(theta, X, y, epoch, alpha=0.01):\n",
    "  \"\"\"\n",
    "  批量梯度下降函数。拟合线性回归，返回参数和代价\n",
    "    epoch: 批处理的轮数\n",
    "  \"\"\"\n",
    "  cost_data = [lr_cost(theta, X, y)]\n",
    "  _theta = theta.copy()  # 拷贝一份，不和原来的theta混淆\n",
    "\n",
    "  for _ in range(epoch):\n",
    "    _theta = _theta - alpha * gradient(_theta, X, y)\n",
    "    cost_data.append(lr_cost(_theta, X, y))\n",
    "\n",
    "  return _theta, cost_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "Lx_dnNrxU8ei",
    "tags": []
   },
   "outputs": [],
   "source": [
    "epoch = 500\n",
    "final_theta, cost_data = batch_gradient_decent(theta, X, y, epoch)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "kCe-db1AU8en",
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.80252685])"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "final_theta\n",
    "#最终的theta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "yigjBbL4U8eq",
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[32.072733877455676,\n",
       " 6.765173695979992,\n",
       " 5.890004498127525,\n",
       " 5.859739979565583,\n",
       " 5.8586933921330795,\n",
       " 5.858657199743247,\n",
       " 5.858655948162117,\n",
       " 5.858655904880771,\n",
       " 5.858655903384046,\n",
       " 5.858655903332286,\n",
       " 5.858655903330497,\n",
       " 5.858655903330435,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330434,\n",
       " 5.858655903330434,\n",
       " 5.858655903330434,\n",
       " 5.8586559033304315,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432,\n",
       " 5.858655903330432]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cost_data\n",
    "# 看下代价数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "ZrMX8THHU8et",
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.858655903330432"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算最终的代价\n",
    "lr_cost(final_theta, X, y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "B9VOLMPqk2Os"
   },
   "source": [
    "scikit-learn model的预测表现"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "5gM2jYk2T0Hv",
    "scrolled": true,
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn import linear_model\n",
    "\n",
    "# 假设 X 和 y 已经被正确地定义\n",
    "# X.shape 应该是 (n_samples, 1)\n",
    "# y.shape 应该是 (n_samples,)\n",
    "\n",
    "# 创建线性回归模型并拟合数据\n",
    "model = linear_model.LinearRegression()\n",
    "model.fit(X, y)\n",
    "\n",
    "# 获取特征值用于绘图，这里假设 X 只有一个特征\n",
    "x = X[:, 0]  # 如果 X 有多个特征，这里需要选择一个用于绘图\n",
    "\n",
    "# 进行预测并将其转换为一维数组\n",
    "f = model.predict(X).flatten()\n",
    "\n",
    "# 绘制训练数据的散点图\n",
    "plt.scatter(x, y, label='Training Data')\n",
    "\n",
    "# 绘制预测线\n",
    "plt.plot(x, f, 'r', label='Prediction')\n",
    "\n",
    "# 显示图例\n",
    "plt.legend(loc=2)\n",
    "\n",
    "# 显示图形\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "rsQw66Y9U8ew"
   },
   "source": [
    "# 代价数据可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "YZyEbK4RU8ew",
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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WjBq1Ch17txZKSkpatKkib766ivNnz9fKSkp6tevnyTpvvvuU3Z2th577DFlZWVpw4YNevfddzVjxozAeS666CLddNNNeuqpp9SgQQPFx8frr3/9q5o1a6Zhw4aZ+vFcIyYmRpmZmdUe69Spkzp16iRJfKbP0R133KHMzEylpKRIklatWqXFixcrOztbLVu2lOTOHnusX84loVbs3LlT//mf/6nPPvtM5513ngYPHqxx48YFki1+3bfffqu+fftWe2zhwoWBf9SWLFminJwcfffdd2rXrp3Gjx+vq666Kmh8SUmJnnjiCX3wwQc6duyYrrzySj3yyCOET0l9+vTRvn37qj22atWqwMwCfT43c+fOldfr1Z49e2RZllq3bq2rr75ad9xxR9CVRKtWrdKzzz6rXbt2qVWrVrr77rt10003BZ2rvLxcM2bM0DvvvKMff/xRl112mR555JHT3pG8vtuwYYOys7O1dOlSpaWlBd7nMx26adOmae3atdq/f79OnDihxMREDRkyRCNGjAi6xNxtPSbwAACAsMceHgAAEPYIPAAAIOwReAAAQNgj8AAAgLBH4AEAAGGPwAMAAMIegQcAAIQ9Ag8AnMHMmTOVkpKiI0eOmC4FQIgIPAAAIOwReAAAQNgj8AAAgLBH4AHgGgcOHNBDDz2k3/72t+rcubMGDBigpUuXBo5v2LBBKSkp8nq9+u///m/16NFD6enpuvfee/Wvf/2ryvnee+893XDDDerSpYsyMzM1YcIEHThwoMq4nTt3asyYMerWrZu6dOmi/v37Bz2lvEJJSYkmTZqkyy+/XL/5zW/00EMPyefz1W4TANiikekCAECSvv/+ew0dOlQej0e33nqr4uLi9NFHH+nhhx9WaWmpbr/99sDYOXPmyOPx6K677tLhw4f1yiuv6Pbbb9c777yjJk2aSJLeeustPfTQQ0pLS9P48eN1+PBhLVy4UJ9++qnefvttxcTESJK++uor3XrrrWrUqJFuvvlmtW7dWnv27NHq1as1bty4oBrHjh2rhIQEjR8/Xl9++aWWLFmiuLg4Pfjgg471CUBoCDwAXGHGjBk6fvy4/v73v+v888+XJA0fPlzjx4/XrFmzNGzYsMDYoqIieb1eNW3aVJLUsWNHjR07VosXL1Z2drb8fr+efvppdejQQa+//roaN24sSfrNb36je+65Ry+//LJGjx4tSZo2bZosy9L//M//qFWrVoHvMWHChCo1pqam6vHHHw+8Liws1NKlSwk8QB3AkhYA4yzL0vvvv68+ffrIsiwdOXIk8OvKK69USUmJtm3bFhj/hz/8IRB2JOmaa65Ry5YtlZubK0n64osvdPjwYQ0fPjwQdiSpd+/eSkpK0ocffihJOnLkiP75z3/qxhtvDAo7kuTxeKrUeWrokqTLL79chYWFKi0tPeceALAXMzwAjDty5IiKi4u1aNEiLVq06LRjKpah2rZtG3TM4/Gobdu22rdvnyTpu+++kyS1a9euynmSkpL0ySefSJL27t0rSerQoUON6vxlKKqop6ioKCiAAXAfAg8A406cOCFJGjRokK6//vpqx6SkpCgvL8/Jsqpo0KD6SXHLshyuBMDZIvAAMC4uLk7nnXeeTpw4od/+9renHVcReHbv3h30vmVZ2r17t1JSUiRVzsTs2rVL3bt3Dxq7a9euwPE2bdpIkr755pva+UEAuBZ7eAAY17BhQ/Xv318rV66sNnz88pEOb7/9dtC+mRUrVujQoUPq1auXJKlz585q0aKF3nzzTZWXlwfG5ebmaufOnerdu7ekk0Gra9euWrZsWWAZrAKzNkB4YYYHgCs88MAD2rBhg4YOHaohQ4aoffv2Kioq0rZt27R+/Xpt3LgxMLZ58+a65ZZbdMMNNwQuS2/btq2GDh0qSYqIiNCECRP00EMP6bbbbtOAAQMCl6W3bt066BL3Rx55RMOHD9f111+vm2++WQkJCdq3b58+/PBDvfPOO063AYBNCDwAXOGCCy7QkiVLNHv2bH3wwQd64403FBsbq/bt21e5RPzee+/V119/rblz5+rHH39U9+7d9ec//1lRUVGBMTfccIOaNGminJwcPf3004qOjla/fv304IMPBjYbS9Ill1yixYsX67nnntMbb7yhn376Sa1atVJWVpZjPzsA+3ks5m0B1BEbNmxQdna2nnvuOV1zzTWmywFQh7CHBwAAhD0CDwAACHsEHgAAEPbYwwMAAMIeMzwAACDsEXgAAEDYI/AAAICwR+ABAABhj8ADAADCHoEHAACEPQIPAAAIewQeAAAQ9gg8AAAg7P3/Jg5vMSlinmEAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "# 假设 cost_data 是一个包含成本数据的列表或数组\n",
    "# epoch 是时间序列的长度\n",
    "\n",
    "# 创建图形和轴\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "# 绘制时间序列数据\n",
    "ax.plot(np.arange(epoch + 1), cost_data)\n",
    "\n",
    "# 设置x轴和y轴的标签\n",
    "ax.set_xlabel('epoch')\n",
    "ax.set_ylabel('cost')\n",
    "\n",
    "# 显示图形\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "5XhEi6SqU8ez",
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "final_theta: [0.80252685]\n",
      "Shape of final_theta: (1,)\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 假设 final_theta 是从某个模型训练得到的参数\n",
    "print(\"final_theta:\", final_theta)\n",
    "print(\"Shape of final_theta:\", final_theta.shape)\n",
    "\n",
    "# 根据 final_theta 的实际内容进行调整\n",
    "if final_theta.shape[0] == 1:\n",
    "    # 如果只有一个参数，可能是截距\n",
    "    b = final_theta[0]\n",
    "    # 假设斜率为0或需要从其他方式获取\n",
    "    m = 0  # 或者根据实际情况设置\n",
    "else:\n",
    "    # 如果有多个参数，正常提取截距和斜率\n",
    "    b = final_theta[0]\n",
    "    m = final_theta[1]\n",
    "\n",
    "# 绘制数据和预测线\n",
    "plt.scatter(data.population, data.profit, label=\"Training data\")\n",
    "plt.plot(data.population, data.population * m + b, 'r', label=\"Prediction\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "67DO0QyBU8e2"
   },
   "source": [
    "# 3- 选修章节"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "Tb-CO9raU8e2",
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>square</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2104</td>\n",
       "      <td>3</td>\n",
       "      <td>399900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1600</td>\n",
       "      <td>3</td>\n",
       "      <td>329900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2400</td>\n",
       "      <td>3</td>\n",
       "      <td>369000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1416</td>\n",
       "      <td>2</td>\n",
       "      <td>232000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3000</td>\n",
       "      <td>4</td>\n",
       "      <td>539900</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   square  bedrooms   price\n",
       "0    2104         3  399900\n",
       "1    1600         3  329900\n",
       "2    2400         3  369000\n",
       "3    1416         2  232000\n",
       "4    3000         4  539900"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "raw_data = pd.read_csv('ex1data2.txt', names=['square', 'bedrooms', 'price'])\n",
    "raw_data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "7WBXHMXzU8e6"
   },
   "source": [
    "# 标准化数据\n",
    "最简单的方法是令：\n",
    "\n",
    " \n",
    "\n",
    "其中  是平均值，sn 是标准差。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "sFLN1gSfU8e7",
    "tags": []
   },
   "outputs": [],
   "source": [
    "def normalize_feature(df):\n",
    "#     \"\"\"Applies function along input axis(default 0) of DataFrame.\"\"\"\n",
    "    return df.apply(lambda column: (column - column.mean()) / column.std())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "SL2V8gRmU8e-",
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>square</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.130010</td>\n",
       "      <td>-0.223675</td>\n",
       "      <td>0.475747</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.504190</td>\n",
       "      <td>-0.223675</td>\n",
       "      <td>-0.084074</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.502476</td>\n",
       "      <td>-0.223675</td>\n",
       "      <td>0.228626</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.735723</td>\n",
       "      <td>-1.537767</td>\n",
       "      <td>-0.867025</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.257476</td>\n",
       "      <td>1.090417</td>\n",
       "      <td>1.595389</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     square  bedrooms     price\n",
       "0  0.130010 -0.223675  0.475747\n",
       "1 -0.504190 -0.223675 -0.084074\n",
       "2  0.502476 -0.223675  0.228626\n",
       "3 -0.735723 -1.537767 -0.867025\n",
       "4  1.257476  1.090417  1.595389"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = normalize_feature(raw_data)\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "pjP2SsV3U8fE"
   },
   "source": [
    "# 2. 多变量批量梯度下降 -  Multi-var batch gradient decent"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "XHTA9KcXU8fE",
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(47, 3) <class 'numpy.ndarray'>\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "def get_X(df):\n",
    "    ones = pd.DataFrame({'ones': np.ones(len(df))})  # 创建一个全为1的列\n",
    "    data = pd.concat([ones, df], axis=1)  # 将全1列与原始数据合并\n",
    "    return data.iloc[:, :-1].values  # 返回除了最后一列以外的所有列的值\n",
    "\n",
    "# 假设 data 是你的DataFrame\n",
    "# 以下是如何使用 get_X 函数的示例\n",
    "X = get_X(data)\n",
    "print(X.shape, type(X))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "PUHGSR5jU8fI",
    "tags": []
   },
   "outputs": [],
   "source": [
    "alpha = 0.01 #学习率\n",
    "theta = np.zeros(X.shape[1]) #X.shape[1]：特征数n\n",
    "epoch = 500  #迭代次数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "NbC5-6NfU8fL",
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of X: (47, 2)\n",
      "Shape of y: (47,)\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "# 假设你从某个数据源加载了数据\n",
    "# 例如，从CSV文件中加载\n",
    "# data = pd.read_csv('your_data.csv')\n",
    "\n",
    "# 假设 data 是一个DataFrame，其中包含了特征和目标列\n",
    "# 以下是如何从DataFrame中提取X和y的示例\n",
    "# 假设最后一列是目标列\n",
    "X = data.iloc[:, :-1].values  # 提取所有行，除了最后一列的所有列\n",
    "y = data.iloc[:, -1].values   # 提取所有行的最后一列\n",
    "\n",
    "# 检查X和y的形状\n",
    "print(\"Shape of X:\", X.shape)\n",
    "print(\"Shape of y:\", y.shape)\n",
    "\n",
    "# 确保X和y的行数一致\n",
    "if X.shape[0] != y.shape[0]:\n",
    "    raise ValueError(\"The number of samples in X and y does not match.\")\n",
    "\n",
    "# 如果行数一致，可以继续后续操作\n",
    "# 定义代价函数和批量梯度下降函数等"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "DTvLgpImU8fN",
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1kAAAIbCAYAAAAZ5lTgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJdUlEQVR4nO3df3zN9f//8fsZZ7NhZn6+/WbVmhobMd6JQjS86VP04y1KKiVJfX1q78I7qQ+Vd7xJ3syvknc/RL0rC4Xkrd5EpHpLZpZfjcJ+tcPOtvP9Q+es07Cd7dh5Ped2vVxcOOc8z3k9pkfj7vl8PZ82l8vlEgAAAADAL4ICXQAAAAAAVCWELAAAAADwI0IWAAAAAPgRIQsAAAAA/IiQBQAAAAB+RMgCAAAAAD8iZAEAAACAH1UPdAFWtmPHDrlcLtnt9kCXAgAAACCAnE6nbDab4uPjSx3LTNZ5uFwuWeWsZpfLpfz8fMvUA+ujZ+Arega+omfgK3oGvrJSz/iSDZjJOg/3DFZsbGyAK5Hy8vK0e/duXXLJJQoLCwt0OTAAPQNf0TPwFT0DX9Ez8JWVeubrr78u81hmsgAAAADAjwhZAAAAAOBHhCwAAAAA8CNCFgAAAAD4ESELAAAAAPyI3QUBAABQJoWFhXI6neV+/+nTpz0/BwXxb/0oXWX1jN1uV7Vq1fz2eYQsAAAAnJfL5VJGRoYyMzMr9DlFRUWqXr26jhw5QshCmVRmz0RERKhx48ay2WwV/ixCFgAAAM7LHbAaNmyosLCwcv8ltLCwUKdPn1ZISIhfZw1QdVVGz7hcLuXl5enYsWOSpD/84Q8V/kxCFgAAAM6psLDQE7Dq1atX4c+SpBo1ahCyUCaV1TOhoaGSpGPHjqlhw4YVvhbztAAAADgn9z1YYWFhAa4EuLDcPV6R+w7dCFkAAAAolT/uUwGszJ89TsgCAAAAAD8iZAEAAACAHxGyAAAAcNFYt26d7r77bnXu3FlXXnmlevbsqUmTJmn//v1+vc7HH3+sZcuW+fUzA2H27NmKjo4+64/58+cHpKaVK1cqOjpaJ06cCMj1y4LdBQEAAHBRmD59upKTk9W3b19NmTJFkZGROnDggFasWKFHHnlE7777rt+u9fHHH+ubb77R0KFD/faZgVKjRg298sorJZ73x1bnVRUhCwAAAFXexo0blZycrNGjR+vhhx/2PN+pUyfdfPPN2rBhQwCrC6z8/HxVr179nIf9BgUFKS4urnKLMhzLBQEAAFDlLVq0SPXr19fo0aPP+vp1113n+fXp06c1depUdevWTbGxsRo0aJA++ugjr/F79+7Vvffeq4SEBLVv3159+/ZVcnKyJCkpKUnvvPOO9u7d61lal5SUdN763njjDfXt29ezhPHll19WUVGRJOnQoUOKjo7W6tWrS7zvpptu0qOPPup5nJGRofHjxyshIUHt2rXT0KFD9c0333i9p2fPnnr66aeVnJys6667Tu3atVNmZuZ56yuNe/ng888/ry5duig+Pl5JSUnKzc31Gnf48GGNHTtWHTt2VFxcnEaOHKk9e/aU+Lx3331XN954o+Li4tSzZ0+NGjVKhw8f9hqTkZGhe+65R3FxcerTp0+Jmcjt27dr6NCh6tixo+Lj4/WnP/1J77zzToW+zrJiJgsAAAA+c7lcynP4dp5QYWGhTp3KV2FRUIUOew0Ltfu03XZBQYG+/PJL9enTR3a7vdTx48eP16ZNmzRu3Di1adNG//rXv/TQQw9pzpw56tWrlyTp/vvvV/369fXss8+qVq1aOnDggDIyMiRJo0eP1okTJ5SWlqbp06dLkiIjI895vaVLl+qZZ57RsGHDdO2112rHjh166aWXlJOTo8cff1zNmjVTXFycUlJSdMMNN3jel56erm+//VZjxoyRJGVlZenPf/6zwsLCNHHiRNWuXVtLly7VnXfeqbVr13odJr127Vq1bNlSTz75pIKCgko9B62goKDEc9Wre0eJpUuX6oorrtBzzz2nQ4cOafr06Tp9+rRmzJghScrNzdWwYcMUFBSkyZMnKyQkRHPnztUdd9yh9957z7P8cMGCBXrhhRc0ePBgjR07Vg6HQ19++aVOnDihpk2bev13uuWWWzRixAi99dZbSkpKUmxsrKKiopSbm6tRo0apY8eOevHFFxUcHKzU1FRlZ2ef9+v0F0KWIdZtTteL877Qwr81V5uWHAYIAAACx+VyqdtNi/TZtoMBuf7VnZpr04q7yxy0MjMzlZ+fryZNmpQ69rvvvtPatWs1efJk3XbbbZKk7t276/Dhw56QdeLECR06dEhPPvmkevbsKUnq0qWL5zNatGihyMhIHTlypNRldoWFhZozZ4769++vCRMmSJK6desmp9OpRYsW6b777lPdunXVv39/TZ8+Xbm5uapVq5Yk6YMPPlCdOnXUrVs3SdIrr7yi7OxsLV++3BOounbtqr59+2rhwoV67LHHPNd1Op1KTk4u0yHTeXl5uuKKK0o8v2zZMl111VWex8HBwZozZ44nQIeEhGjChAkaM2aMoqKitHLlSh05ckSrVq1SVFSUpDPLNa+77jq98sorSkpKUk5Ojl566SXdeuutevrpp38N5qd0ww03lAjmQ4cO9dzzFh8fr40bN2rNmjUaPXq09u/fr5ycHD366KOKjo72/F5UFpYLGmLhGzv1yZYMrdmYFuhSAAAAZOLZxGUJZdu3b5ckrxkjSUpMTNR///tf5eXlqW7dumratKlefPFFvfPOO54ZrPJIS0vTyZMnS1yvX79+cjqd2rVrl+f6TqdTH3/8sWdMSkqK+vTpo+DgYEnS5s2blZCQoDp16qigoEAFBQUKCgpSp06d9PXXX3t9fkJCQpkClnRm44u33367xI+YmBivcdddd51XELrhhhvkcrk81962bZsuvfRST8CSpIiICP3xj3/0/L7v2LFDDodDgwcPLrUud7iUpLCwMDVp0sTz36JFixaqVauWnnrqKaWkpFT6ToTMZBmisLDI62cAAIBAsdls2rTi7nIuFzylGjVqVOpywYiICIWEhOjIkSOljs3KypLdbldERITX8/Xr15fL5VJOTo7CwsK0cOFCzZgxQ08//bRnpucvf/mLOnXq5NPXkpWVJUleS/l++9j9eoMGDZSQkKBVq1bpxhtv1Hfffad9+/Zp0qRJnvecPHlSO3fuPOusU4sWLc76+WURFBSk2NjYUsf9/jNr1aqlkJAQHTt2TJKUnZ2t+vXrn/V9e/fulSTPvWENGzYs9Xq1a9f2emy325Wfny9JqlOnjhYvXqxZs2bpscceU2Fhoa666ipNmDDBM7N1IRGyDOH+RuJyBbgQAAAAnfm7Sc2wYJ/eU1hYqGpBRapRI7hCIctX1atXV4cOHfSf//xHBQUFJe4l+q06derI6XQqKytLderU8Tz/888/y2azef5i37p1a82aNUtOp1M7duzQiy++qPvvv1+ffvqpatasWeba3GHu9zMtx48f99Tj1r9/f02ePFknT57UqlWr1KBBA3Xu3Nmr9muuucZr90Q392yXmy8htazcNbvl5ubq9OnTnsBUp06ds55Hdvz4cc/X6f79OHbsmBo3blyhetq1a6cFCxbo1KlT2rJli5577jk9+OCDXrOBFwrLBQ3h/v/ARcoCAADw2YgRI/TTTz/pH//4x1lf37hxoySpY8eOklRiJ7/Vq1erbdu2JZbY2e12de7cWffdd59yc3M9szZ2u12nT58uta7WrVsrMjKyxPU+/PBD2e12tWvXzvNcnz59JElr1qzRqlWr1K9fP69t1//4xz9q3759ioqKUmxsrNePypi92bBhgwoLCz2PV69eLZvN5pkF69ixo77//nulpRXf/pKVlaXPPvvM8/seHx+v0NBQrVixwm911ahRQz169NDtt9+uQ4cOlem/S0Uxk2UIZrIAAADKr0ePHrrnnns0e/Zspaamqn///qpbt64OHTqkFStWKCcnRz169NDll1+uPn36aNq0aTp16pRat26t9957Tzt27NDLL78s6czmGM8995z69eun5s2bKzc3V/PmzVPTpk09y/KioqK0YsUKffDBB2rZsqXq1q2rZs2alairWrVqGj16tJ555hlFRkaqR48e2rlzp5KTk3XnnXeqbt26nrHumao5c+bo2LFjGjBggNdn3XXXXXr//fd1xx13aPjw4WrSpIlOnDihr776So0aNdJdd91Vrt+7oqIi7dy5s8Tz9erVU/PmzT2P8/Pz9eCDD3rCzPTp09W3b1/PPVg33XSTlixZolGjRmncuHGe3QWrV6+uO++8U9KZJYAPPvigpk+fLpfLpWuvvVanT5/Wjh079Kc//alMyxYl6ZNPPtHbb7+t3r17q0mTJvr555/12muvqUOHDgoJCSnX74MvCFmGKJ7JCmwdAAAApvrf//1fxcfHa9myZXriiSfkcDjUsGFDdevWTSNHjvSMe+GFF/Tiiy8qOTlZmZmZatOmjWbNmuXZSbBBgwaqX7++5s2bp6NHj6p27dq66qqr9MILL3iWQQ4ePFi7du3SlClTlJmZqf/5n//RtGnTzlrXsGHDVL16dS1ZskSvv/66GjRooDFjxuj+++8vMXbAgAFav369WrRo4TXLJUl169bVm2++qZkzZ2r69OnKzMxUvXr11L59e11//fXl/n07deqUbr311hLPDx48WM8++6zX13HixAk99thjys/P1/XXX+91z1itWrW0dOlSTZs2TRMnTlRRUZE6dOig1157zbN9uyTde++9ioyM1JIlS7Ry5UrVrFlTcXFxPt1H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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "# 假设 cost_data 是一个包含成本数据的数组\n",
    "# 以下是如何使用 matplotlib 绘制时间序列数据的示例\n",
    "\n",
    "# 创建图形和轴\n",
    "plt.figure(figsize=(10, 6))  # 可以调整图形的大小\n",
    "\n",
    "# 绘制时间序列数据\n",
    "plt.plot(np.arange(len(cost_data)), cost_data, label='Cost over Epochs')\n",
    "\n",
    "# 设置x轴和y轴的标签\n",
    "plt.xlabel('Epoch', fontsize=18)\n",
    "plt.ylabel('Cost', fontsize=18)\n",
    "\n",
    "# 显示图例\n",
    "plt.legend()\n",
    "\n",
    "# 显示网格\n",
    "plt.grid(True)\n",
    "\n",
    "# 显示图形\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "XIAeC3aWU8fQ",
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.80252685])"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "final_theta"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "xhv7H1OSTZJs"
   },
   "source": [
    "Scikit-learn 的预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "Dx3gtarBk2Os",
    "scrolled": true,
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "import numpy as np\n",
    "\n",
    "# 假设 X, y, 和 f 已经被定义\n",
    "# X.shape 应该是 (m, 2)\n",
    "# y.shape 应该是 (m,)\n",
    "# f.shape 应该是 (m,)\n",
    "\n",
    "# 创建图形和三维轴\n",
    "fig = plt.figure()\n",
    "ax = fig.add_subplot(111, projection='3d')\n",
    "\n",
    "# 绘制预测的三维曲线\n",
    "# 注意：这里我们使用 X[:, 0] 和 X[:, 1] 作为x和y轴\n",
    "ax.plot(X[:, 0], X[:, 1], f, 'r', label='Prediction')\n",
    "\n",
    "# 绘制训练数据的三维散点图\n",
    "ax.scatter(X[:, 0], X[:, 1], y, label='Training Data')\n",
    "\n",
    "# 设置轴标签\n",
    "ax.set_xlabel('Feature 1')\n",
    "ax.set_ylabel('Feature 2')\n",
    "ax.set_zlabel('Value')\n",
    "\n",
    "# 显示图例\n",
    "ax.legend(loc=2)\n",
    "\n",
    "# 显示图形\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "IRrnttEHU8fS"
   },
   "source": [
    "# 3. 学习率 - Learning rate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "w9U-3YXMU8fT",
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1.00000000e-05 3.00000000e-05 2.15443469e-04 6.46330407e-04\n",
      " 4.64158883e-03 1.39247665e-02 1.00000000e-01 3.00000000e-01]\n"
     ]
    }
   ],
   "source": [
    "base = np.logspace(-1, -5, num=4)\n",
    "candidate = np.sort(np.concatenate((base, base*3)))\n",
    "print(candidate)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "ePELIHY-U8fV",
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of X: (47, 2)\n",
      "Shape of y: (47,)\n",
      "Shape of theta: (2,)\n"
     ]
    },
    {
     "data": {
      "image/png": "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48YpNzdXS5YscfqxUOX4/Hr8MjIy5O/vry5dujj2y8zMrLImY2ZmJmPcxA4cOKDS0lLdc8896tevn/r166d7771XknTrrbfq9ttvZxw9XLdu3c76XnFxsc455xz5+/tXO37S6T+ncXFx+uWXX6r8aLa6+zzgOunp6U7/qJGk9u3bq1WrVtq3b58k/i41G1eOV0hIiDp06FDlXJXHuXpcCcYmkJKSok8//dTxLy2p4kYhHx8fpzs50fzKysp0//33KyMjQ0uWLFG7du2c3u/SpYtiYmKqrJW6du1aDRgwwHGHbUpKimw2m7Zu3erYJzMzU99//71SUlKa/oO0YN27d9fLL7/s9PXggw9Kkh577DE98sgjjKOHGzJkiE6ePKldu3Y5tp04cULfffedevbsqYCAAF188cV67733nI5bu3at4uPj1blzZ0nSwIED5ePjo/fff9+xj81m0+bNmxm/JtSxY0d9//33TtsOHjyoEydOqFOnTpL4u9RsXD1eKSkp+vDDD1VaWup0LqvVqqSkJNcW79LF39AkTp48aSQnJxs333yz8cknnxirVq0y+vbtazz22GPuLq3FmzFjhnHeeecZS5cuNXbs2OH0Vbm24ttvv20kJCQYzz77rPHZZ58ZM2fONHr06GFs377d6Vx33HGHMWjQIGPt2rXGhx9+aFx99dXG7373O6O0tNQdH61F++yzz6qsY8w4ei673W5cd911xuWXX2688847xgcffGDccMMNRv/+/Y0jR44YhmEYX3zxhdG9e3fjkUceMT777DPj2WefNRISEoy1a9c6nevhhx82+vbta6xatcr45JNPjJtvvtm49NJLjZycHHd8tBZh2bJlxnnnnWfMmjXL2LJli/HOO+8YV199tfGb3/zGOH78uGM//gx6joKCAuPdd9813n33XePmm282Bg0a5Hhdub6/K8crKyvLSExMNCZMmGB8+umnxrJly4yePXsaS5YscflnsxhGEzxPDy6Xnp6uWbNmaceOHQoNDdXIkSM1adIkpzX90Pwuu+wyHTx4sNr3PvzwQ8dM1Ouvv67Fixfr0KFDio2N1eTJkzVkyBCn/XNzc/WXv/xF69evV1lZmQYOHKgZM2ZUmYVG09u2bZtuvfVWrVq1Sr169XJsZxw91/Hjx/WXv/xFGzZsUGlpqfr27asHH3zQqc3iww8/1N/+9jdlZmaqY8eOuueeezRq1Cin85SUlOiZZ57RmjVrlJ+frz59+mjGjBlnfboXGs8wDK1YsUKvvvqq9u/fr9DQUCUmJmrSpElV/rvzZ9AzHDhwQEOHDq32vZdfflkXX3yxJNeO1/bt2zVnzhzt2rVLUVFR+sMf/qC77767ylJvjUUwBgAAAESPMQAAACCJYAwAAABIIhgDAAAAkgjGAAAAgCSCMQAAACCJYAwAAABIIhgDAAAAkgjGAAAAgCSCMQDAxebPn6+EhAQdP37c3aUAQL0QjAEAAAARjAEAAABJBGMAAABAEsEYAEwrOztbDz74oH7zm9/oggsu0IgRI7Rq1SrH+9u2bVNCQoLWrl2rv/71r0pOTlZiYqLuvfde/fzzz1XO9+677+raa69V7969dfHFF2vq1KnKzs6usl96erruu+8+XXLJJerdu7eGDx+uZ555psp+ubm5mjZtmvr27auLLrpIDz74oAoLC137HwEAXMjP3QUAAOrvl19+0Q033CCLxaI//OEPioqK0qZNm/TQQw8pLy9Pt912m2Pf559/XhaLRXfffbeOHTuml156SbfddpvWrFmjoKAgSdKbb76pBx98UL169dLkyZN17Ngxvfzyy9q+fbtWr14tq9UqSfrhhx/0hz/8QX5+frrxxhvVqVMn7du3Tx999JEmTZrkVOP999+vzp07a/Lkyfr+++/1+uuvKyoqSn/84x+b7b8TANQHwRgATOiZZ56R3W7X22+/rVatWkmSxowZo8mTJ2vBggUaPXq0Y1+bzaa1a9cqLCxMktSjRw/df//9WrlypW699VaVlpbq6aef1nnnnad///vfCgwMlCRddNFFGjdunJYtW6aJEydKkmbPni3DMPSf//xHHTt2dFxj6tSpVWrs3r27nnjiCcfrkydPatWqVQRjAB6LVgoAMBnDMPT+++/rsssuk2EYOn78uONr4MCBys3N1XfffefY//e//70jFEvSlVdeqbZt2+rjjz+WJH377bc6duyYxowZ4wjFkjR48GDFxcVp48aNkqTjx4/riy++0HXXXecUiiXJYrFUqfPMcC5Jffv21cmTJ5WXl9fo/wYA0BSYMQYAkzl+/LhycnL02muv6bXXXjvrPpXtD127dnV6z2KxqGvXrjp48KAk6dChQ5Kk2NjYKueJi4vT//73P0nS/v37JUnnnXdener8dXiurMdmszkFdQDwFARjADCZ8vJySdLvfvc7XXPNNdXuk5CQoD179jRnWVX4+FT/Q0nDMJq5EgCoG4IxAJhMVFSUQkNDVV5ert/85jdn3a8yGO/du9dpu2EY2rt3rxISEiSdntnNzMzUgAEDnPbNzMx0vN+lSxdJ0k8//eSaDwIAHoYeYwAwGV9fXw0fPlzvvfdetSH1149iXr16tVNf77p163T06FGlpKRIki644AK1bt1aK1asUElJiWO/jz/+WOnp6Ro8eLCkikDer18/vfHGG472i0rMAgPwBswYA4AJTZkyRdu2bdMNN9yg66+/Xt26dZPNZtN3332nrVu36vPPP3fsGxERoZtuuknXXnutY7m2rl276oYbbpAk+fv7a+rUqXrwwQd18803a8SIEY7l2jp16uS09NuMGTM0ZswYXXPNNbrxxhvVuXNnHTx4UBs3btSaNWua+z8DALgUwRgATKhNmzZ6/fXXtXDhQq1fv16vvvqqIiMj1a1btypLp91777368ccf9eKLLyo/P18DBgzQI488ouDgYMc+1157rYKCgrR48WI9/fTTCgkJ0eWXX64//vGPjpvmJOn888/XypUr9eyzz+rVV19VcXGxOnbsqNTU1Gb77ADQVCwGP/8CAK+0bds23XrrrXr22Wd15ZVXurscAPB49BgDAAAAIhgDAAAAkgjGAAAAgCR6jAEAAABJzBgDAAAAkgjGAAAAgCSCMQAAACCJYAwAAABIIhgDAAAAkgjGAAAAgCSCMQAAACCJYAwAAABIkv4/ly7/MN31RI0AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 800x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 假设 X 和 y 已经被正确地定义\n",
    "print(\"Shape of X:\", X.shape)\n",
    "print(\"Shape of y:\", y.shape)\n",
    "\n",
    "# 初始化 theta，确保其长度与 X 的列数匹配\n",
    "theta = np.zeros(X.shape[1])\n",
    "print(\"Shape of theta:\", theta.shape)\n",
    "\n",
    "# 定义代价函数\n",
    "def lr_cost(theta, X, y):\n",
    "    m = X.shape[0]  # 样本数\n",
    "    inner = X @ theta - y  # 计算预测值与实际值的差\n",
    "    cost = (1 / (2 * m)) * inner.T @ inner  # 计算代价\n",
    "    return cost\n",
    "\n",
    "# 定义批量梯度下降函数\n",
    "def batch_gradient_descent(theta, X, y, epoch, alpha=0.01):\n",
    "    m = X.shape[0]  # 样本数\n",
    "    cost_data = [lr_cost(theta, X, y)]  # 初始化代价历史\n",
    "    theta_history = [theta.copy()]  # 记录参数历史\n",
    "\n",
    "    for _ in range(epoch):\n",
    "        inner = X @ theta - y  # 计算预测值与实际值的差\n",
    "        gradient = (1 / m) * X.T @ inner  # 计算梯度\n",
    "        theta -= alpha * gradient  # 更新参数\n",
    "        cost = lr_cost(theta, X, y)  # 计算新的代价\n",
    "        cost_data.append(cost)\n",
    "        theta_history.append(theta.copy())\n",
    "\n",
    "    return np.array(theta_history), np.array(cost_data)\n",
    "\n",
    "# 示例使用\n",
    "epoch = 1000  # 迭代次数\n",
    "candidate = [0.01, 0.03, 0.1]  # 不同的学习率候选值\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(8, 8))\n",
    "for alpha in candidate:\n",
    "    _, cost_data = batch_gradient_descent(theta, X, y, epoch, alpha=alpha)\n",
    "    ax.plot(np.arange(epoch + 1), cost_data, label=f'alpha={alpha}')\n",
    "\n",
    "ax.set_xlabel('epoch', fontsize=12)\n",
    "ax.set_ylabel('cost', fontsize=12)\n",
    "ax.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "SwpPCazZg3Ik"
   },
   "source": [
    "可以看到最合适的learning rate是0.3"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "6-HlM4onU8fX"
   },
   "source": [
    "# 4. 正规方程 - Normal equation\n",
    "正规方程是通过求解下面的方程来找出使得代价函数最小的参数的：$\\frac{\\partial }{\\partial {{\\theta }_{j}}}J\\left( {{\\theta }_{j}} \\right)=0$ 。\n",
    " 假设我们的训练集特征矩阵为 X（包含了${{x}_{0}}=1$）并且我们的训练集结果为向量 y，则利用正规方程解出向量 $\\theta ={{\\left( {{X}^{T}}X \\right)}^{-1}}{{X}^{T}}y$ 。\n",
    "上标T代表矩阵转置，上标-1 代表矩阵的逆。设矩阵$A={{X}^{T}}X$，则：${{\\left( {{X}^{T}}X \\right)}^{-1}}={{A}^{-1}}$\n",
    "\n",
    "梯度下降与正规方程的比较：\n",
    "\n",
    "梯度下降：需要选择学习率α，需要多次迭代，当特征数量n大时也能较好适用，适用于各种类型的模型\t\n",
    "\n",
    "正规方程：不需要选择学习率α，一次计算得出，需要计算${{\\left( {{X}^{T}}X \\right)}^{-1}}$，如果特征数量n较大则运算代价大，因为矩阵逆的计算时间复杂度为O(n3)，通常来说当n小于10000 时还是可以接受的，只适用于线性模型，不适合逻辑回归模型等其他模型\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "BGjQLe7jU8fY",
    "tags": []
   },
   "outputs": [],
   "source": [
    "# 正规方程\n",
    "def normalEqn(X, y):\n",
    "    theta = np.linalg.inv(X.T@X)@X.T@y#X.T@X等价于X.T.dot(X)\n",
    "    return theta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "3JB8AH_iU8fa",
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.88476599, -0.05317882])"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "final_theta2=normalEqn(X, y)#感觉和批量梯度下降的theta的值有点差距\n",
    "final_theta2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "YfBLlOZnY6Qi",
    "tags": []
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "# 假设 X 是特征矩阵，y 是目标向量\n",
    "# 确保 X 包含截距项，如果 X 没有截距项，可以添加一个全1的列\n",
    "if X.shape[1] == 2:  # 如果 X 只有两个特征\n",
    "    X = np.hstack((np.ones((X.shape[0], 1)), X))  # 添加截距项\n",
    "\n",
    "# 初始化 theta，确保其长度与 X 的列数匹配\n",
    "final_theta2 = np.zeros(X.shape[1])  # 这将初始化为 [0, 0, 0]\n",
    "\n",
    "# 使用 final_theta2 计算预测值\n",
    "f = final_theta2[0] + final_theta2[1] * X[:, 1] + final_theta2[2] * X[:, 2]\n",
    "\n",
    "# 继续后续操作，例如绘图等"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "colab": {
   "collapsed_sections": [],
   "name": "1.linear_regreesion_v1.ipynb",
   "provenance": [],
   "toc_visible": true,
   "version": "0.3.2"
  },
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.20"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
